标签:++ efi http pac src namespace char cstring turn
T1
数组增长两倍,再从左右分别搜索
1 #include <cstdio> 2 #include <cstring> 3 char s[100010]; 4 int a[200010],n,maxlen=0,ans,len,start,flag=0; 5 int main() 6 { 7 freopen("beads.in","r",stdin); 8 freopen("beads.out","w",stdout); 9 scanf("%s",s);n=strlen(s); 10 for (int i=1;i<=n;i++) a[n+i]=a[i]=s[i-1]-‘0‘; 11 len=0; 12 for (int i=1;i<=2*n;i++) 13 { 14 if (a[i]!=2&&a[i]!=3) len=0; 15 if (a[i]==2) len=1,start=i; 16 if (len&&a[i]==3) len++; 17 if (len>maxlen) maxlen=len,ans=start,flag=1; 18 } 19 len=0; 20 for (int i=2*n;i>=1;i--) 21 { 22 if (a[i]!=2&&a[i]!=3) len=0; 23 if (a[i]==2) len=1,start=i; 24 if (len&&a[i]==3) len++; 25 if (len>maxlen) maxlen=len,ans=start,flag=2; 26 } 27 if (flag==0) 28 { 29 printf("TvT"); 30 } 31 if (flag==1) 32 { 33 printf("2"); 34 while(a[++ans]==3) printf("3"); 35 } 36 if (flag==2) 37 { 38 printf("2"); 39 while(a[--ans]==3) printf("3"); 40 } 41 }
T2
暴力求逆元+快速幂
1 #include <cstdio> 2 #include <iostream> 3 #define ll long long 4 using namespace std; 5 ll n,k,p,w=1,sy[1000000],flag=0; 6 ll powx(ll k) 7 { 8 if (k==0) return 1; 9 ll s=powx(k/2); 10 s=s*s%p; 11 if (k%2==1) s=s*2%p; 12 return s; 13 } 14 int main() 15 { 16 freopen("rabit.in","r",stdin); 17 freopen("rabit.out","w",stdout); 18 ios::sync_with_stdio(false); 19 cin>>n>>k>>p; 20 for (int i=0;i<k-1&&i<=n;i++) 21 { 22 w=w*2%k; 23 if (w==1) 24 { 25 flag=i; 26 break; 27 } 28 if (sy[w]==1) break; 29 sy[w]=1; 30 } 31 if (flag) 32 cout<<(powx(flag+1)-1+p)%p*powx(n-flag)%p<<endl; 33 else 34 cout<<powx(n+1)<<endl; 35 }
T3
标签:++ efi http pac src namespace char cstring turn
原文地址:http://www.cnblogs.com/algonote/p/7495019.html