zoukankan      html  css  js  c++  java
  • 51NOD 1385凑数字(找规律?)

    》》点击进入原题测试《《

    思路:这个题是真的想了蛮久,枚举了一下前一百就发现了规律,要想最短的话就是要构建1234567890这个字符串;刚开始找到的规律从1开始枚举到N,每满一百加一,每出现一个各个位数上数字相同的(例如3,22,111)都加一;然后数太大枚举肯定要超时,于是改进了一下,假如这个数是一千,那么它最小位数起码是10*3;假如这个数是一万,那么这个最小位数起码是10*4;依次类推,可以发现最小位数的组成部分肯定有10*(len-1),然后剩下的就是找到看n能被多少个len个1的数整除,加上这个数就可以了。但是这样只过了一半样例,下载一个错误的样例发现,输入太大了,已经超过了longlong的范围,所有这种方案也失败了。然后当然是百度,发现自己好像多此一举了,直接加上第一位n[0]然后在判断n的所有字符是否相同,如果相同则再加一。

    #include<cstdio>
    #include<string>
    #include<iostream>
    #include<sstream>
    using namespace std;
    int main()
    {
        string num;
        cin >> num;
        stringstream ss;
            
        ss << num;
        long long cnum; ss >> cnum;
        ss.clear();
        long long sum = 0;
        sum += 10 * (num.length() - 1);
        cout << sum << endl;
        string slen(num.length(), '1');
        ss << slen;
        long long cslen; ss >> cslen;
        ss.clear();
        sum += cnum / cslen;
        cout << sum << endl;
        
        return 0;
    }
    过了一半样例

    但是还是错了!发现自己想问题还是想的太简单了,并不是后面所有位是相同才加一,大于等于相同位数相同的那个数都能够进行加一,比如223比222大

    再次在提供两组样例

    输入样例1:
    777777777777777777777777777777777777777777777777777776
    输出样例1:
    536
    
    输入样例2:
    1156532368851100011559833235112186568441122132385787789665411223354115898941005523300114444886300010
    输出样例2:
    991
    #include<cstdio>
    #include<string>
    #include<iostream>
    using namespace std;
    int main()
    {
        string num;
        cin >> num;
        
        long long sum = 0;
        sum += 10 * (num.length() - 1);
        sum += num[0] - '1';
    
        int flag = 1;
        for (int i = 0; i < num.length() - 1; i++)
            if (num[i] <num[i + 1]){        //假如后面有一位数大于前一位就不用在找了
                    break;
            }
            else if (num[i] > num[i + 1]){
                flag = 0; break;
            }
    
        if (flag)sum++;
    
        cout << sum << endl;
        
        return 0;
    }
  • 相关阅读:
    HTML 5--Position HTML Elements
    第十三周项目5-字符串操作:字符统计
    第十三周项目4-数组的排序:冒泡排序
    第十三周项目3-成绩处理函数版
    第十三周项目2-成绩处理
    第十三周项目1-数组大折腾(二)
    第十三周项目1-数组大折腾(一)
    第十二周项目3-用递归方法求解(二)
    第十二周项目3-用递归方法求解(一)
    第十二周项目1-阅读程序(五)
  • 原文地址:https://www.cnblogs.com/zengguoqiang/p/9329338.html
Copyright © 2011-2022 走看看