디지털 통계 문제

1998 단어 문제.
#include<stdio.h>

#include<math.h> 



void GetParamater(int a[7][10],int n,int m,int sum0[7]);

void GetSum(int data,int sum[10],int a[7][10]);



int main(){

	int a[7][10] ;

	int data,sum[10],sum0[7];



	GetParamater(a,6,10,sum0);

	//printf("%lf
",log10(92345)); while(scanf("%d",&data)){ GetSum(data,sum,a); sum[0]-=sum0[(int)log10(data)+1]; for(int x=0;x<10;x++){ printf("%d
",sum[x]); } } return 0; } void GetParamater(int a[7][10],int n,int m,int sum0[7]){ for(int k=0;k<m;k++) a[0][k] = 0; sum0[0]=0; for(int i=1,temp=1;i<=n;i++){ for(int j=0;j<m;j++){ a[i][j] = 10*a[i-1][j]+ temp; //printf("%d ",a[i][j]); } sum0[i]=sum0[i-1]+temp; temp *= 10; //putchar('
'); } } void GetSum(int data,int sum[10],int a[7][10]){ for(int i=0;i<10;i++){ sum[i]=0; } while(data!=0){ int k = (int)log10(data); // ! int p = pow(10,k); int high = data/p; //printf("k=%d p=%d high=%d
",k,p,high); for(int x=0;x<high;x++){ sum[x]+=p; for(int y=0;y<10;y++){ sum[y]+=a[k][y]; } } //printf("data/p = %d p=%d
",data%p+1,p); sum[high]+=(data%p+1); //printf("sum[high]%d %d
",sum[high],high); //printf("%d
",data); data%=p; p/=10; } //printf("data=%d
",data); }

 

디지털 통계 문제


한 권의 책의 페이지 번호는 자연수 1부터 자연수 n까지 순서대로 인코딩된다.책의 페이지 번호는 통상적인 습관에 따라 배열되며, 매 페이지 번호는 여분의 전도 숫자 0을 포함하지 않는다.예를 들어 6페이지는 06이나 006 등이 아닌 숫자 6으로 표시한다.숫자 계수 문제는 주어진 책의 총 페이지 번호 n에 대해 책의 전체 페이지 번호에 각각 몇 번의 숫자 0, 1, 2,..., 9를 사용해야 하는지를 계산해야 한다.
프로그래밍 작업: 책의 전체 페이지 번호를 표시하는 10진수 n(1≤n≤10^9)을 지정합니다.프로그래밍 계산서의 전체 페이지 번호에 0, 1, 2,..., 9를 각각 몇 번을 사용했는가.
입력: 입력마다 한 줄만 있고 책의 전체 페이지 번호를 나타내는 정수 n을 제공합니다.
출력: 프로그램 실행이 끝났을 때 출력은 10줄이 있고 k줄 출력 페이지 번호에서 숫자 k-1을 사용하는 횟수, k=1, 2,..., 10.

좋은 웹페이지 즐겨찾기