zoukankan      html  css  js  c++  java
  • 1049 Counting Ones (30 分)

    1049 Counting Ones (30 分)
     

    The task is simple: given any positive integer N, you are supposed to count the total number of 1's in the decimal form of the integers from 1 to N. For example, given N being 12, there are five 1's in 1, 10, 11, and 12.

    Input Specification:

    Each input file contains one test case which gives the positive N (≤).

    Output Specification:

    For each test case, print the number of 1's in one line.

    Sample Input:

    12
    

    Sample Output:

    5

    30分的题确实比其他分的好很多,这种题就比较锻炼思维。
    找1的个数,这个是一定不能暴力的,肯定超时。
    可能就只能骗分。

     1 #include <bits/stdc++.h>
     2 #define ll long long int
     3 using namespace std;
     4 int n;
     5 string s;
     6 int getstr(string s){
     7     int num = 0;
     8     for(int i = 0; i < s.length(); i++)
     9         num = num*10 + s[i]-'0';
    10     return num;
    11 }
    12 
    13 ll pow(int x){
    14     int num = 1;
    15     while(x--){
    16         num *= 10;
    17     }
    18     return num;
    19 }
    20 int main(){
    21     cin >> s;
    22     int len = s.length();
    23     n = getstr(s);
    24     ll sum = 0;
    25     ll mod = pow(len-1), left = 0, right = 0;
    26     for(int i = 0; i < len; i++){
    27         right = n%mod;
    28         if(s[i] == '1'){
    29             sum += (right+1);
    30             sum += left*mod;
    31         }else if(s[i] == '0'){
    32             sum += left*mod;
    33         }else{
    34             sum += (left+1)*mod;
    35         }
    36         left = left*10 + s[i]-'0';
    37         mod /= 10;
    38     }
    39     cout << sum << endl;
    40     return 0;
    41 }


  • 相关阅读:
    网络管理工具:Wireshark
    WAP header 信息的意义
    Visual Studio 2005 发布网站提示发布成功 但指定文件夹下没任何文件问题的解决
    Hello Win
    [转]手把手教你卸载oracle 10g
    如何识别 SQL Server 的版本
    生成insert sql脚本的存储过程
    JQuery触发事件
    PHP事务的使用方法
    PHP session和cookie
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/11185301.html
Copyright © 2011-2022 走看看