PAT A 1049. Counting Ones (30)
1632 단어 PAT
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
1~n의 모든 수 중 1의 수량을 통계하다.
0이 되면 1의 개수는 0이다.9시가 되면 1의 개수는 1이다.99시에 1의 개수는 20...
즉 data[i]에서 i개 9시까지의 1의 개수 data[i]=data[i-1]*10+10^(i-1)
숫자 n에 대한 1의 총 개수 추이 관계식은 다음과 같습니다.
1. 최고위 i를 먼저 더하면 뒤에 나타나는 (99...99, i-1개 9)의 횟수를 도입한 1
2. 최상위 수준에서 도입 고려 1
3. 그리고 최고위 삭제, 순환
코드:
#include
#include
using namespace std;
int main()
{
int n,num=0; // ,1
cin>>n;
int data[12]; // i (9,99,999… 1,2,3…) 1 ( 1,20,300…)
int number[12]; // i ( 1 )
int i,j,temp=n;
data[0]=0; //0
number[0]=0;
for(i=1;i<12;i++) // data[],number[]
{
number[i]=temp%10;
temp/=10;
if(temp==0) //
break;
data[i]=data[i-1]*10+pow(double(10),i-1);
}
for(;i>0;i--)
{
num+=number[i]*data[i-1]; // (i)*0 99…99(i 9) 1
if(number[i]>1) // 1, 10^(i-1)
num+=(int)pow((double)10,i-1);
else if(number[i]==1) // 1, n( )-10^(i-1)+1
num+=n-(int)pow((double)10,i-1)+1;
n-=number[i]*(int)pow((double)10,i-1); //
}
cout<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PAT A 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 fo...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.