济南-1103试题解题报告
2016-11-06 20:55
183 查看
济南-1103试题解题报告
By shenben
上午
T1代码:
T2代码:
[b]T3代码:
[b]补上题目:[/b]
By shenben
上午
T1代码:
#include<cstdio> #include<cstring> using namespace std; unsigned int p,z,n,v[66000]; char c; #define name "ab" int main(){ for(int l=1;;l++){ memset(v,0,sizeof v); freopen(name".in","r",stdin); for(p=0,z=(1u<<l)-1,c=getchar();c>32;c=getchar(),n++){ p=((p<<1)|(c=='B'))&z; if(n>l) v[p/32]|=1u<<(p%32); } for(p=0;p<(1<<l);p++){ if(!(v[p/32]>>(p%32)&1)){ freopen(name".out","w",stdout); for(int i=l;i;i--) putchar('A'+(p>>(i-1)&1)); return 0; } } } return 0; } /* //copy from ylf's AC code //答案很短 很短 //直接搜 不过 检验的时候很慢... //预处理所有的子串 存好了就可以O(1)的检验了 //因为只有AB 可以用位运算优化 #include<cstdio> #include<cmath> #include<cstring> #define maxn (1<<22)+10 using namespace std; int n,m,f[maxn],sum,falg,ans; char s[maxn]; void dfs(int now,int x){ if(falg) return; if(now==sum+1){ if(f[x]==0){ ans=x;falg=1; } return; } dfs(now+1,x); dfs(now+1,x+(1<<now-1)); } int main(){ freopen("ab.in","r",stdin); freopen("ab.out","w",stdout); scanf("%s",s); n=strlen(s);m=log(n)/log(2)+1; for(int i=0;i<n;i++){ int x=0; for(int j=1;j<=m;j++){ if(i+j-1>n) break; if(s[i+j-1]=='B') x+=(1<<j-1); f[x+(1<<j)]=1; } } for(sum=1;sum<=m;sum++){ dfs(1,1<<sum); if(falg) break; } for(int i=0;i<sum;i++) printf(ans&(1<<i)?"B":"A"); fclose(stdin); fclose(stdout); return 0; } */
T2代码:
//评测时需要额外开栈 #pragma comment(linker,"/STACK:102400000,102400000") #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=5e6; bool pd[N+1]; int p[N+1],c[N+1]; int maxc(int x){ if(x<=N)return c[x]; int ans=x; for(int i=1;p[i]*p[i]<=x;i++) if(x%p[i]==0){while(x%p[i]==0)x/=p[i];ans=p[i];} return max(ans,x); } int get(int x,int y,int b){ if(x>y) return 0; if(b==0) return x==1; if(y<=p) return y-x+1; if(x==y) return maxc(x)<=p[b]; return get(x,y,b-1)+get((x-1)/p[b]+1,y/p[b],b); } int main(){ freopen("prime.in","r",stdin); freopen("prime.out","w",stdout); int n,m,b; scanf("%d%d%d",&b,&n,&m); c[1]=1; for(int i=2;i<=N;i++){ if(!pd[i])p[++p[0]]=i,c[i]=i; for(int j=1,t;j<=p[0]&&(t=p[j]*i)<=N;j++){ pd[t]=1; c[t]=max(c[i],p[j]); if(i%p[j]==0)break; } } printf("%d\n",m-n+1-get(n,m,upper_bound(p+1,p+1+p[0],b)-p-1)); fclose(stdin); fclose(stdout); return 0; }
[b]T3代码:
[b]补上题目:[/b]
相关文章推荐
- 济南-1102试题解题报告
- 济南-1031试题解题报告
- 济南-1101试题解题报告
- 济南-1030试题解题报告
- Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告
- 全国信息学分区联赛模拟试题(三)_____解题报告
- [解题报告] NOIP 2014 提高组Day1试题
- 2016-11-16试题解题报告
- 复赛模拟试题 物品选取(重庆一中高2018级信息学竞赛测验7) 解题报告
- 第六届蓝桥杯校园选拔赛试题---派遣敢死队 解题报告
- 北大ACM试题分类 - 实时更新我所有的解题报告链接
- [解题报告] NOIP 2014 提高组Day2试题
- BZOJ 1103 [POI 2007] dfs序+树状数组 解题报告
- 蓝桥杯 历届试题 九宫重排 解题报告(BFS,双向BFS优化)
- 2016-11-10试题解题报告
- POJ2456(复赛模拟试题) 好斗的奶牛 解题报告
- 蓝桥杯 历届试题 买不到的数目 解题报告(完全背包,数论)
- 第六届蓝桥杯省赛试题--垒骰子 以矩阵的方法实现 解题报告
- 北大ACM试题分类 - 实时更新我所有的解题报告链接
- 2016-11-13试题解题报告