题解 | #数字阶梯求和#

数字阶梯求和

http://www.nowcoder.com/practice/c66df29f6c1c4dbba0bd51619210e082

最容易想到的最直接办法
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
    int num,n;
    while (cin >> num >> n) {
        string a = to_string(num),b = "",ans = "";
        for(int ii = 2;ii <= n;++ii){
            b = "";
            ans = "";
            for(int j = 1;j <= ii;++j)
                b += to_string(num);
            int len1 = a.size();
            int len2 = b.size();
            reverse(a.begin(),a.end());
            reverse(b.begin(),b.end());
            int i = 0,carry = 0;
            while (i < len1 && i < len2) {
                int cur = a[i] - '0' + b[i] - '0' + carry;
                ans += to_string(cur % 10);
                carry = cur / 10;
                i++;
            }
            if (i < len2) {
                swap(a, b);
                swap(len1, len2);
            }
            while (i < len1) {
                int cur = a[i] - '0' + carry;
                ans += to_string(cur % 10);
                carry = cur / 10;
                i++;
            }
            if (carry)
                ans += to_string(carry);
            reverse(ans.begin(), ans.end());
            a = ans;
        }
        if(ans.size() == 0)
            ans = a;
        cout << ans << endl;
    }
}


全部评论

相关推荐

03-02 08:18
集美大学 Java
钱嘛数字而已:没有赛事奖项么?另外,项目经历字有点多哈,建议突出一下重点:用的什么技术,解决什么问题,达到什么效果。
大家都开始春招面试了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务