• [原创]北大ACM POJ 1047题解


    [原创]北大ACM POJ 1047题解

    某牛人总结了一条规律,对于数N,若N为循环的则有N*(length(N)+1)=99....99, (length(N)个9),length(N)为N的位数,含前导0. 利用该规律不难完成该题。
    不过该规律好像还是有问题,例如像11111111这种数是满足上述规律的,不过它应该不能算循环数吧。

    不过按该规律的代码可以直接AC。

    代码如下:
    Source Code
    Problem: 1047        User: absolute
    Memory: 248K        Time: 0MS
    Language: C++        Result: Accepted
    #include <stdio.h>
    #include <string>
    #include <iostream>
    using namespace std;
    string strmul(const string& source)
    {
    int i,j;
    string add;
    int len = source.length();
    for(i=0;i<len;i++)//反转字符串便于计算
    {
    add.append(source,len-i-1,1);
    }
    string result(add);
    //将每个字符串当作一个整数相加len次,即乘以len+1
    for(i=0;i<len;i++)
    {
    for(j=0;j<len;j++)
    {
    int temp = (result[j]-'0')+(add[j]-'0');
    if(temp<10)
    result[j] = temp+'0';
    else
    {
    temp -= 10;
    result[j] = temp+'0';
    result[j+1] += 1;
    }

    }
    }
    return result;
    }
    int main()
    {
    string digital,result;
    int i;
    while(cin>>digital)
    {
    result = strmul(digital);
    string strnine("");
    strnine.reserve(digital.length());
    for(i=0;i<digital.length();i++)
    {
    strnine.append("9");
    }
    if(result==strnine)
    printf("%s is cyclic\n",digital.c_str());
    else
    printf("%s is not cyclic\n",digital.c_str());
    }
    return 0;
    }
  • 相关阅读:
    CodeForces 697B Barnicle 模拟
    15.三数之和
    167.两数之和
    209.长度最小子数组-sliding window
    COMP9313 Week9a-0
    树总纲(To be continued)
    COMP9517 Week8
    COMP9313 week8b Pipeline
    94. 二叉树的中序遍历
    COMP9313 Week8 Classification and PySpark MLlib
  • 原文地址:https://www.cnblogs.com/absolute8511/p/1649577.html
Copyright © 2020-2023  润新知