1035 トピックの説明
既知: Sn = 1+1/2 +1/3 +…+1/n。明らかに、任意の整数 k について、n が十分に大きい場合、S_n>k になります。
整数 k が与えられた場合、S_n>k となる最小 n を計算する必要があります。
入力フォーマット
正の整数 k。
出力フォーマット
正の整数 n。
入力サンプルと出力サンプル
入力
1
出力
2
指示/ヒント
【データ範囲】
データの 100% については、1≤k≤15 です。
分析します:
正の整数 K を入力してください
S_n = 1+ 1/2 + 1/3 +...+1/n;
S_n>K になるように
正の整数 n を出力します
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double sum=1;
int k = sc.nextInt();
for (int i = 2; i <= 9999999 ; i++) {
sum+=(double)1/i;
if(sum>k){
System.out.println(i);
break;
}
}
}
}
1980年 タイトル 説明
1 から n までのすべての整数の中に数字 x が何回現れるかを数えてみてください。たとえば、1 から 11 まで、つまり 1,2,3,4,5,6,7,8,9,10,11 では、11 という数字が 4 回出現します。
入力フォーマット
2 つの整数 n と x はスペースで区切られます。
出力フォーマット
x の出現数を表す 1 つの整数。
入力サンプルと出力サンプル
入力
11 1出力
4
指示/ヒント
データの 100\%100% の場合、1≤n≤10^6
分析します:
ここで、一桁の値を判定するには、各判定の余りを判定すればよい。
y=i;
while(y>0){ if(y%10==x) { sum++; y /=10; }
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sum=0;
int y;
int n = sc.nextInt();
int x = sc.nextInt();
for (int i = 1; i <=n ; i++) {
y=i;
while(y>0){
if(y%10==x) {
sum++;
}
y/=10;
}
}
System.out.println(sum);
}
}