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