213 条题解
-
0reailikezhu LV 4 @ 2021-10-24 11:27:15
就枚举每个数字之中有多少个目标的数就行了复杂度 \(O(nlgn)\)。
```
#include<stdio.h>int n,x;
int ans;int main(){
scanf("%d%d",&n,&x);
for(int i=1;i<=n;i++){
int j=i;
while(j){
if(j%10==x) ans++;
j/=10;
}
}
printf("%d",ans);
return 0;
}
``` -
02021-10-22 14:14:36@
#include<iostream>
using namespace std;
int main()
{
int a,b=0,c,e;
cin>>a>>c;
for(int i=1;i<=a;i++)
{
e=i;
while(e>0)
{
if(e%10==c)
b+=1;
e=e/10;
}
}
cout<<b;
} -
02021-10-11 16:38:13@
n,x=input().split()
res=0
for i in range(1,int(n)+1):
res+=str(i).count(x)print(res)
-
02021-10-11 16:37:22@
n,x=input().split()
res=0
for i in range(1,int(n)+1):
res+=str(i).count(x)print(res)
-
02021-07-13 10:23:29@
#include <iostream>
using namespace std;
int main()
{
int n,x,sum=0;
cin>>n>>x;
for(int i=1; i!=(n+1); i++){
for(int t=i;t!=0;t/=10){
if((t%10)==x){
sum++;
}
}
}
cout<<sum<<endl;
return 0;
} -
02021-05-18 09:20:09@
import java.io.*; import java.util.*; /** * @author wpx * @version V1.0 * @Package com.test * @date 2021/5/17 14:13 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(System.in))); int endNum = sc.nextInt(); int findNum = sc.nextInt(); int[] fixedZeroNum = new int[]{0, 9, 108, 1107, 11106, 111105, 1111104, 11111103}; int[] zeroCountNum = new int[]{0, 1, 11, 111, 1111, 11111, 111111, 1111111}; // 先转换为字符串 String endNumStr = String.valueOf(endNum); int strEndPos = endNumStr.length() - 1; int count = 0; // 从前往后 for(int i = 0; i < endNumStr.length(); i++){ // 按照千位、百位、十位、个位的顺序 // 对应位置上的数字 Integer num = Integer.parseInt(String.valueOf(endNumStr.charAt(i))); // 位数 int digitNum = strEndPos - i; int preCount; if (findNum == 0) { // 特殊处理 if(digitNum == 0){ preCount = 0; } else { preCount = (int) ((digitNum - 1 ) * Math.pow(10, digitNum - 1)); preCount -= zeroCountNum[digitNum - 1]; } } else { preCount = (int) (digitNum * Math.pow(10, digitNum -1)); } if(findNum != 0){ if(num > findNum){ // 加上累计值 count += num * preCount; // 加上以findNum开头的数量 count += (int) Math.pow(10, digitNum); } else if (num < findNum) { // 加上累计值 count += num * preCount; } else { count += num * preCount; if(i + 1 < endNumStr.length()) { count += Integer.parseInt(endNumStr.substring(i + 1)); } count += 1; } } else { count += num * (preCount + digitNum); // 补上一位的0 if(num - 1 > 0 && digitNum - 1 >= 0){ count += (num - 1) * fixedZeroNum[digitNum - 1]; } // 补0 if(i != 0 && num - 1 > 0){ count += fixedZeroNum[digitNum]; } } } System.out.println(count); } }
-
02021-03-25 20:31:23@
#include<iostream> using namespace std; class sde{ public: int qumo(int n) { return n%10; } int geshu(int *n,int *x) { int cnt=0; for(int i=1;i<=*n;i++) { int nn=i; while(nn>=1) { int m=qumo(nn); nn/=10; if(m==*x) cnt++; } } return cnt; } private: }k; int main() { int n,x;scanf("%d%d",&n,&x); int cnt=k.geshu(&n,&x); printf("%d",cnt); return 0; }
-
02021-01-20 21:25:31@
python直接用str中的count方法
n,x = map(int,input().split()) sum = 0 for i in range(1,n+1): if str(x) in str(i): b = str(i).count(str(x)) sum+=b print(sum)
-
02020-12-27 21:19:52@
#include <iostream>
using namespace std;
int main()
{
int n,x,i,t,ans=0;
cin>>n>>x;
for(i=1;i<=n;i++){
t=i;
while(t>0){
if(t%10==x){
ans++;
}
t/=10;
}
}
cout<<ans;
return 0;
} -
02020-11-21 18:03:59@
#include <cstdio> int n,m,s; int pd(int x) { while (x!=0) { if (x%10==m) s++; x/=10; } } int main() { scanf("%d%d", &n,&m); for (int i=1;i<=n;i++) pd(i); printf("%d", s); return 0; }
-
02020-09-12 19:09:29@
#include <stdio.h> int main(){ int n; char x; char str[10]; scanf("%d %c",&n,&x); int count=0; for (int i=1;i<=n;i++){ sprintf(str,"%d",i); char *go=str; while(go[0]){ if (go[0]==x){ count++; } go++; } } printf("%d\n",count); return 0; }
-
02020-08-25 22:54:12@
请在代码中细看,有很多注释
#include<cstdio> #include<iostream> const int N = 100000000 + 10; char a[N]; //#define _DEBUG_ //把这一句删了或者注释了都可以直接去掉日志输出 using namespace std; int main() { int end,needle;//采用大海捞针的思想 int cnt = 0;//统计 cin >> end >> needle;//输入 //freopen("output.out", "w", stdout); for (int i = 1; i <= end; i++)//sea { #ifdef _DEBUG_ cout << "searching " << i << endl; #endif if (i < 10)//如果是一位数 { if (i == needle)//比较 { cnt++;//统计 #ifdef _DEBUG_ cout << " successfully found member in " << i << endl; #endif } } else//大于两位数 { int x = i;//拿取数据 /*采用的思想: 如果 当前循环的数 还是两位数 那么 如果 当前循环的数的最后一位 和查找对象 不相等 那么扔掉最后一位 否则 统计并扔掉最后一位 否则 跳出循环 */ while (x >= 10)//开始循环... { if (x % 10 != needle)//拿取最后一位进行比较 { x /= 10;//如果不是,那么扔掉最后一位 } else { #ifdef _DEBUG_ cout << " successfully found member in " << i << endl; #endif x /= 10; cnt++; } } if (x == needle) { cnt++; #ifdef _DEBUG_ cout << " successfully found member in " << i << endl; #endif } } } //fclose(stdout); cout << cnt << endl; return 0; }
-
02020-08-01 15:49:40@
方法一:暴力
代码:
var n,x,i,j,s:longint; begin readln(n,x); for i:=1 to n do begin j:=i; while j>0 do begin if j mod 10=x then inc(s); j:=j div 10; end; end; write(s); end.
方法二:dp
代码:
var n,x,i,s:longint; a:array[0..10000003] of longint; begin readln(n,x); for i:=1 to n do if i mod 10=x then a[i]:=a[i div 10]+1 else a[i]:=a[i div 10]; for i:=1 to n do s:=s+a[i]; write(s); end.
-
02020-07-28 12:18:10@
#include <stdio.h>
int main()
{
int i,j,z,x,sum=0;;
scanf("%d %d",&i,&j);
for(z=1;z<=i;z++)
{
x=z;
do{
if(x%10==j)
sum++;
x=x/10;
}
while(x>0);}
printf("%d",sum);
} -
02019-09-06 14:47:52@
#include <stdio.h>
int main()
{
int n,x;
int num = 0;
int i;
int temp;
scanf("%d %d",&n,&x);
for(i = 1;i <= n;i++)
{
temp = i;
do
{
if(temp % 10 == x)
num++;
temp /= 10;
}
while(temp);
}
printf("%d\n",num);
} -
02019-02-17 16:31:21@
第一次写题解,dalao不要见笑~刚学半年,程序可能不是最简的
附上代码:
/*
思路(dalao不要见笑):
1.输入
2.数据处理
2.1 i:循环从1到n;
2.2 备份i;
2.3 求个数
3.输出
*/
#include<iostream>
//#include<string>
//#include<cstring>我的缺省源自己搞出来的
using namespace std;
int c;//全局变量自动归零(:
int main()
{
int n,x,temp;//nx不用说了,temp临时做数据处理用
cin>>n>>x;
for(int i=1;i<=n;i++)
{
int temp=i;//备份(i循环还要使用);
while(temp>0)
{
if(temp%10==x)
c++;
temp/=10;//直到/10后小于0才结束;
}
}
cout<<c;
return 0;
} -
02018-05-10 21:08:27@
C++ ac,老人小孩都看的懂
#include<iostream>
using namespace std;int main()
{
int n,m,s=0,i,t,t1;
cin>>n>>m;
for(i=1;i<=n;i++)
{
t=i;
while(t>0)
{
t1=t%10;
if(t1==m) s++;
t=t/10;
}
}
cout<<s;
} -
02018-04-21 21:36:19@
#include <iostream>
using namespace std;
int main()
{
long int n;
int a,x,k[10]={0,0,0,0,0,0,0,0,0,0};
scanf("%ld%d",&n,&x);
for(long int i=1;i<=n;i++)
{
a=i;
while(a!=0)
{
k[a%10]++;
a=a/10;
}
}
printf("%d",k[x]);
return 0;
} -
02018-04-21 21:36:05@
#include <iostream>
using namespace std;
int main()
{
long int n;
int a,x,k[10]={0,0,0,0,0,0,0,0,0,0};
scanf("%ld%d",&n,&x);
for(long int i=1;i<=n;i++)
{
a=i;
while(a!=0)
{
k[a%10]++;
a=a/10;
}
}
printf("%d",k[x]);
return 0;
} -
02018-04-16 23:20:58@
#include<iostream> using namespace std; int main() { int n, m; cin >> n >> m; int c = 0; for (int i = 1; i <= n; i++) { int k = i; while (k) { if (k % 10 == m) c++; k /= 10; } } cout << c; return 0; }
信息
- ID
- 1848
- 难度
- 5
- 分类
- (无)
- 标签
- 递交数
- 16580
- 已通过
- 5806
- 通过率
- 35%
- 被复制
- 36
- 上传者