1035题目描述
已知:Sn=1+1/2+1/3+…+1/n。显然对于任意一个整数 k,当 n足够大的时候,S_n>k。
现给出一个整数 k,要求计算出一个最小的 n,使得 S_n>k。
输入格式
一个正整数 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 之间用一个空格隔开。
输出格式
1 个整数,表示 x 出现的次数。
输入输出样例
输入
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);
}
}