313
문제 해설
Difficulty : *800 (Math / Number theory)
1 ≤ n ≤ 1,000,000,000, 1 ≤ x ≤ n일 때, S(x)는 x의 모든 자릿수를 하나씩 더한 값입니다. 예를 들어 S(5) = 5, S(10) = 1, S(322) = 3 + 2 + 2 = 7입니다. 이때 우리는 S(x+1) < S(x)를 만족하는 x를 ‘재밌는 수’라고 부를 거예요. n이 주어질 때, 조건 안에 재밌는 수 x는 몇 개나 있는지 출력합니다.
풀이
x는 십진수로 정해져 있으므로 S(x+1) < S(x)를 만족할 때는 자릿수가 오르는 시점 = 9가 10으로 바뀌어 자릿수 합이 작아지는 시점, 즉 일의 자릿수가 9일 때뿐입니다. 정답은 주어진 수에 1을 더해 10으로 나눈 값과 동일합니다.
코드
C
#include <stdio.h>
int main(){
int t, n;
scanf("%d", &t);
while(t--){
scanf("%d", &n);
printf("%d\n", (n+1)/10);
}
return 0;
}
C++
#include <iostream>
using namespace std;
int main(){
int t, n;
cin>>t;
while(t--){
cin>>n;
cout<<(n+1)/10<<endl;
}
return 0;
}
Java
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for(int i = 0; i < t; i++){
System.out.println((sc.nextInt()+1)/10);
}
}
}
Python
time = int(input())
for t in range(time):
print(int((int(input())+1)/10))
문제 출처
https://codeforces.com/contest/1553/problem/A