试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
例如,在1到11 中,即在1、2、3、4、5、6、7、8、9、10、11 中,数字1 出现了4 次。
输入共1行,包含2个整数n、x,之间用一个空格隔开。
输出共1行,包含一个整数,表示x出现的次数。
11 1
4
对于100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。
#include<stdio.h> int main() { int n , x , mid_var0 , mid_var1 , mid_var2 , sum = 0 ; scanf("%d %d",&n,&x); for(int i = 1 ; i <= n ; i++) { mid_var0 = i ; while(mid_var0 != 0) { mid_var1 = mid_var0 % 10 ; if(mid_var1 == x) sum++; mid_var0 /= 10 ; } } printf("%d",sum); return 0; }
#include <iostream> using namespace std; int times(int n, int x) { int cnt = 0; while (n) { int e = n % 10; if (e == x) cnt ++; n /= 10; } return cnt; } int main() { int n, x; cin >> n >> x; int res = 0; for (int i = 1; i <= n; i ++ ) res += times(i, x); cout << res << endl; }
import java.util.*; public class Main { public static void main(String[] args) { int n=0; int x=0; int cnt=0; Scanner in=new Scanner(System.in); n=in.nextInt(); x=in.nextInt(); for(int i=1;i<=n;i++) { int temp=i; while(temp!=0) { if(temp%10==x) cnt++; temp/=10; } } System.out.println(cnt); } }
#include <stdio.h> int main() { int n, x; int count = 0; scanf("%d %d", &n, &x); for (int i = 1; i <= n; i++)//每一次循环判断一个数,直到n为止 { int a = i; while (a)//利用while循环判断每一位数字,直到a等于0, { if (a % 10 == x)//如果个位上的数字是x,count加一 count++; a /= 10;//将个位上的数字去除,十位上的数字变成个位上的数字 } } printf("%d", count); return 0; }
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(),x=sc.nextInt(); int count=0; for(int i=1;i<=n;i++) count+=total(i,x); System.out.println(count); } public static int total(int i,int x){ int sum=0; while(i!=0){ if(i%10==x) sum++; i/=10; } return sum; } }
#include <stdio.h> void Judge(int i, int b, int* count){ while(i > 0){ if(i % 10 == b) *count += 1; i /= 10; } } int main(){ int a, b; int count = 0; scanf("%d %d", &a, &b); for(int i = 1; i <= a; i++){ Judge(i, b, &count); } printf("%d", count); return 0; }
n,x = map(int,input().split()) t = 0 for i in range(1,n+1): for j in range(len(str(i))): if str(x) in str(i)[j]: # 如果x在i的第j个字符出现,那t计数一次 t += 1 else: t = t print (t) # 会报错 # 运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。
m,n=map(int,input().split()) cc='' for i in range(1,m+1): i=str(i) cc+=i # 意思是把所有数字的文本先加在一起,组成一个名为cc的长文本, con=cc.count(str(n)) # 再在cc之中用count,数n这个数字出现的次数 # 妙哇! print(con)
#include <stdio.h> int test(int n,int x) { int a,b; int count = 0; a = n/10; b = n%10; if (a == 0 ) { return b == x?1:0; } if (b == x) { count+=1; } return count + test(a, x); } int main() { int a, b; int count = 0; if (scanf("%d %d", &a, &b) != EOF) { for (int i = 1; i <= a; i++) { count = count + test(i, b); } printf("%d\n",count); } return 0; }
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int n = in.nextInt(); int x = in.nextInt(); int count = 0; for (int i = 1; i <= n; i++) { count += sumX(String.valueOf(i), String.valueOf(x)); } System.out.println(count); } } static int sumX(String i, String x ) { int sum = 0; Pattern p = Pattern.compile(x); Matcher m = p.matcher(i); while (m.find()) { sum++; } return sum; } }
#include <stdio.h> int main() { int n = 0; int x = 0; int t = 0; int m = 0; int count = 0; scanf("%d %d", &n, &x); for (int i = 1; i <= n; i++) { int m = i; while (m != 0) { t = m % 10; m = m / 10; if (t == x) count ++; } } printf("%d", count); } //大神的代码 //点个赞