2017 CCCC 决赛 L1 - 6 整除光棍 【模拟】

传送门
// 题意: 就是给定一个<1000的正整数n, 找到一个一个全由1组成的数使得可以整除这个给定的数.
输出整除的结果以及这个数的位数.

思路: 当然用Java就很简单了. 但是有点烦, 说说C++的做法, 因为最后的那个数全由1组成, 我们只是要求商的结果, 所以我们可以模拟一个除法来做, 即我们每次增加一位数, 然后判定是否可以商数, 即是否整除不是0, 有的话就累加起来, 并且之后就算是0也要算进去, (就是模拟除法的过程取商数, 写出来就懂了.), 然后直到模数为0就可以结束了……. 具体看代码吧….

AC Code

void solve()
{
    int n;
    while(cin >> n) {
        int now = 1, k = 0;
        string ans = "";
        for (int len = 1 ; ; len++) {
            if (k || now/n) {
                ans += ('0' + now/n);
                k = 1;
            }
            now %= n;
            if (now == 0) {
                cout << ans << ' ' << len << endl;
                break;
            }
            now = now*10 + 1;
        }
    }
}

你可能感兴趣的:(简单学习日常)