题目链接:缩位求和 解题思路:由于最长是1000位的数字,因此全部加起来不会超过10000,先把每一位的数加起来,再判断如果大于9那就可以再缩位 #include<bits/stdc++.h> #define x first #define y second #define mem1(h) memset(h,-1,sizeof h) #define mem0(h) memset(h,0,sizeof h) #define mcp(a,b) memcpy(a,b,sizeof b) using namespace std; typedef long long LL; typedef unsigned long long ull; typedef pair<int,int>PII; typedef pair<double,double>PDD; namespace IO{ inline LL read(){ LL o=0,f=1;char c=getchar(); while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){o=o*10+c-'0';c=getchar();} return o*f; } }using namespace IO; //#############以上是自定义技巧(可忽略)########## const int N=1e5+7,M=2e5+7,INF=0x3f3f3f3f,mod=1e8+7,P=131; int sum; string s; int main(){ cin>>s; for(int i=0;i<s.size();i++){ sum+=s[i]-'0';//每一位全部累加 } while(sum>9){//如果大于9就可以缩位 int t=0; while(sum){//把每一位都加给t t+=sum%10; sum/=10; } sum=t; } cout<<sum<<endl; return 0; }