

此题的大坑在于他会输入一千行这样不管是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;
- }