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 (<=230).
Output Specification:
For each test case, PRint the number of 1’s in one line.
Sample Input: 12 Sample Output: 5 題意:找出0~N內的個數,共有多少個1 算法:對每一位單獨考慮,看該位可能存在多少個1; 可以找一個數,找出規律,如:30701,對個,十,百,千,萬各位分析;
#include<cstdio>int main(){ int n,a=1,ans=0; int left,right,now; scanf("%d",&n); while(n/a){ left=n/(a*10); now=n/a%10; right=n%a; if(now<1) ans+=left*a; else if(now==1) ans+=left*a+right+1; else if(now>1) ans+=(left+1)*a; a*=10; } printf("%d/n",ans); return 0;}新聞熱點
疑難解答