这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。
题目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=1013
这里要注意可能会是大数。所以简单的int性肯定不行。
懒的用char[],直接改用string.
// Author: Tanky Woo
// HDOJ 1013
// Accepted 1013 0MS 268K 595B C++ Tanky Woo
#include
#include
#include
using namespace std;
string num;
int sum;
string int2str(int &i;) //这里参考了以为神牛的
{
string s;
stringstream ss(s);
ss << i;
return ss.str();
}
int main()
{
while(cin >> num && num != "0")
{
int len = num.size();
while(len >= 2)
{
sum = 0;
for(int i = 0; i < len; ++i)
sum += num[i]- '0';
num = int2str(sum);
len = num.size();
}
cout << num << endl;
}
return 0;
}
上卖你的int2str()函数参考了: http://www.cnblogs.com/oomusou/archive/2007/01/06/613413.html
方法二:
// Accepted 1013 0MS 264K 518 B
#include
#include
using namespace std;
int main()
{
while(1)
{
char c;
scanf("%c",&c;);
if(c=='0')break;
int ans=0;
ans+=c-'0';
while(scanf("%c",&c;))
{
if(c=='\n')break;
ans+=c-'0';
if(ans>9)ans-=9;
}
cout<
#include
#include
using namespace std;
int main()
{
string num; //存数输入数据
char str[100]; //用于将数字转换成字符串
vector ivec; //保存最后结果
while(cin >> num && num != "0")
{
int tmp;
while(num.size() > 1) //还可以继续求根
{
tmp = 0;
for(string::size_type ix = 0; ix != num.size(); ix++)
tmp += (num[ix] - '0'); //把char型转换成int数字
itoa(tmp, str, 10);
num = str;
}
ivec.push_back(num); //把最后结果存入vector中
}
for(vector::iterator it = ivec.begin(); it != ivec.end(); it++)
cout << *it << endl;
return 0;
}