1047就是判断一个数乘以他的位数1~n后是这个数转来转去的一个形式。主要就是大整数乘法
贴shi代码
#include<iostream> #include<string> #include<algorithm> using namespace std; //test记录输入的数,back计算乘法之后的数 int test[65]; int back[65]; //判断当前的n,是否构成一个环 int iscyc(int N) { int i,j,k; bool eq=1; //将test作为一个基础,进行比较 for(i=0;i<N;i++) { if(back[i]==test[0]) { //当有一个地方和test[0]相等时,继续往下比较,判断是否是整个串都相等 //一定要注意这里的每次的初始化!!! 每次找到相同的就先设相等 eq=1; for(j=0;j<N;j++) { if(back[(i+j)%N]!=test[j]) { eq=0; break; } } if(eq) return 1; } } return 0; } int main() { string onec; int i,j,k,N,resid,value,flag=0,pos; while(cin>>onec) { pos=0; memset(test,0,sizeof(test)); memset(back,0,sizeof(back)); //还是将输入的string转换成int 数组 倒序 for(i=onec.size()-1;i>=0;i--) { back[pos]=onec[i]-'0'; pos++; } N=onec.size(); //计算对应n的乘法之后的值 resid=0; for(i=0;i<N;i++) { resid=0; for(j=0;j<N;j++) { value=back[j]*(i+1)+resid; test[j]=value%10; resid=value/10; } if(0) {int a=1;} else{ flag=iscyc(N); //有一个不是,则不是 if(!flag) { cout<<onec<<" is not cyclic"<<endl; break; } } } if(flag) cout<<onec<<" is cyclic"<<endl; } return 0; }
1503大水 就是大整数加法,直接代码
#include<iostream> #include<string> using namespace std; int num[101]; int sum[10100]; int main() { string onen; int i,j,k,pos; memset(sum,0,sizeof(sum)); while(cin>>onen&&onen!="0") { memset(num,0,sizeof(num)); pos=0; for(i=onen.size()-1;i>=0;i--) { num[pos]=onen[i]-'0'; pos++; } for(i=0;i<pos;i++) { sum[i]+=num[i]; if(sum[i]>=10) { sum[i+1]++; sum[i]=sum[i]%10; } } } for(i=10100-1;i>=0;i--) if(sum[i]) break; for(j=i;j>=0;j--) cout<<sum[j]; cout<<endl; return 0; }