浙大ACM1115题——Digital Roots

来源:百度知道 编辑:UC知道 时间:2024/09/25 11:43:37
我的代码已经很简单了,为什么还是会超时?
我的代码是:
#include<iostream>

using namespace std;
int main()
{
int n;
int a;
cin>>n;
while(n!=0)
{
a=n%9;
if(a==0)a=9;
cout<<a<<endl;
cin>>n;
}
return 0;
}

一个数字可能很长, int 类型可能放不下:

#include<iostream>

using namespace std;

#define MAX_LEN 1024
int main()
{
char sn[MAX_LEN+1];

cin.getline(sn, MAX_LEN);
while(sn[0] != '0' && sn[0] != '\0')
{
unsigned long n = 0;
char *p = sn;
while (*p) {
n+= (*p - '0');
p++;
}
n %= 9;
if (n == 0) n = 9;
cout<<n<<endl;
cin.getline(sn, MAX_LEN);
}
return 0;
}

你应该用字符串来处理。

一个数字可能很长, int 类型可能放不下: