CF-937
在补题……
D
分析
我们发现这些因子都是二进制形式的十进制数,n的范围是$1e5$,16的二进制是$10000$,于是可以枚举1~16,把这些因子预处理出来,对于每个n就枚举因子再作除,看剩下的数每位是不是只有0与1
代码
#include
using namespace std;
#def服务器托管ine endl 'n'
#define int long long
#define db(x) cout=l;i--)
int s[16],b[33];
void solve(){
int n;cin>>n;
int tp=n,f=0;
while(tp){
if(tp%10>1) f=1;
tp/=10;
}
if(f){
rep(i,2,16){
while(n%b[i]==0){
n/=b[i];
}
}
int tp=n,ff=1;
while(tp){
if(tp%10>1) ff=0;
tp/=10;
}
if(ff) cout>t;while(t--)
solve();
return 0;
}
E
分析
因为所求长度一定是n的因子,我们可以暴力枚举长度$len$,再对遍历每个区间判断就行
操作
蒟蒻之前只会嵌套for循环把每个枚举到的对应区间取出来再遍历判断
难点在于如何简单的实现这个“周期性区间映射”
如$s=hshahaha$,$len$为2,且我们要映射到第一个长为$len$的区间,即要得到这样的映射关系:$s[0]-s[2],s[1]-s[3],s[0]-s[4],s[1]-s[5],s[0]-s[6],s[1]-s[7]$
我们可服务器托管以简化为一个序列,已知序列$a[]$,设周期T,所选的一个周期长度的区间起点为st,用i枚举序列每一个数
则所求映射为 : $a[i]-a[i%T+s]$
rep(i,0,7) a[i]=i;
int T,st;cin>>T>>st;//周期长度与映射区间的起点
for(int i=0;i
代码
void solve(){
int n;cin>>n;
string s;cin>>s;
for(int len=1;len
F
#include
using namespace std;
#define endl 'n'
#define int long long
#define db(x) cout=l;i--)
void solve(){
int a,b,c;cin>>a>>b>>c;
if(c-a!=1){
coutq;
q.push(0);
while(q.size()){
x=q.front();
q.pop();
if(a){
a--;
q.push(x+1);
q.push(x+1);
}
else if(b){
b--;
q.push(x+1);
}
}
cout>t;while(t--)
solve();
return 0;
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net