Blog·Tanky WooABOUTRSS

HDOJ 1013 Digital Roots

24 Jul 2010
这篇博客是从旧博客 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; 
}