PAT Advanced 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 (<=230). Output Specification: For each test case, print the number of 1’s in one line. Sample Input: 12 Sample Output: 5
제목 분석
이미 하나의 정수 N을 알고 있으며, 1~N의 정수에서 1의 횟수를 구한다. (예: 11은 두 번 1의 횟수를 계산한다)
문제 풀이 사고방식
낮은 위치에서 높은 위치까지 매 비트가 1일 때의 숫자 개수를 계산하여 누적하다
틀리기 쉬운 점
지식
N/(a*10) // i
N/a%10 // i
N%a // i
Code
Code 01
#include
using namespace std;
/*
4,6
*/
int main(int argc,char * argv[]) {
int n,t=0,a=1,left,now,right;
scanf("%d",&n);
while(n/a>0) {
left = n/(a*10),now=n/a%10,right=n%a;
if(now==0)t+=left*a;
else if(now==1)t+=left*a+right+1;
else t+=(left+1)*a;
a*=10;
}
printf("%d",t);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.