您的位置:首页 > 其它

HDU 1013 Digital Roots

2014-10-04 17:05 519 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1013

可以用简单模拟的方法做;简单模拟法题解链接:http://blog.csdn.net/dyangel2013/article/details/39780491

也可以用数学方法先找到规律;再求解;

数学找规律代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{

for(int i=1;i<=100;i++)
{

int sum=0;
int n=i;
cc: while(n>0)
{
sum=sum+n%10;
n=n/10;
}
if(sum>9)
{
n=sum;
sum=0;
goto cc;
}
printf("%d\n",sum);
}

return 0;

}
可以看到是以9为周期的数组;
下面贴上

AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char str[1000];
while(cin>>str && strcmp(str,"0"))
{
int n=0;
int len=strlen(str);
for(int i=0;i<len;i++)
n=n+str[i]-'0';
int a[10];
for(int i=1;i<=9;i++)
a[i]=i;
n=n%9;
if(n==0)//这一步处理是为了解决当输入的值为9的倍数时;输出的为9
n=9;
printf("%d\n",a
);
}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数学题