此题的大坑在于他会输入一千行这样不管是int 还是long long 都会溢出,之前一直以下面代码运行难怪一个也过不了
#include <iostream>
using namespace std;
int func(int n)
{
long long sum=0;
while(n)
{
sum+=n%10;
n/=10;//d得到每一位的数
}
return sum;
}
int main()
{
long long n;
cin>>n;
long long count=func(n);
while(count/10)
{
count=func(count);
}
cout<<count;
}
最终修改代码如下:(令我奇怪的是蓝桥杯不能用gets ,我就只能用字符串输入了)
#include <iostream>
using namespace std;
int func(int n)
{
long long sum=0;
while(n)
{
sum+=n%10;
n/=10;//d得到每一位的数
}
return sum;
}
int main()
{
string num;
getline(cin,num);
int a[1005];
int sum=0;
for(int i=0;num[i];i++)//一直加,将字符转为数字
{
a[i]=num[i]-'0';
sum+=a[i];//将各个位上的数字之和加起来
}
long long count=sum;
while(count/10)
{
count=func(count);
}
cout<<count;
}