187 条题解
-
13
赵震昊 LV 6 @ 2018-12-03 15:41:32
#include<iostream> using namespace std; int main(){ int n,x,sum=0; cin>>n>>x; for(int i=1;i<=n;i++){ int t=i; while(t>0){ if(t%10==x) sum++; t/=10; } } cout<<sum<<endl; return 0; }
-
132017-02-26 13:33:44@
#include <stdio.h>
int main()
{
int i,n,x,k=0,j;
scanf("%d %d",&n,&x);
for(i=1;i<=n;i++)
{
j=i;
while(j)
{
if(j%10==x)
k++;
j=j/10;}
}
printf("%d",k);
return 0;
} -
42020-08-01 19:17:28@
数位dp写法,全部1ms
#include <bits/stdc++.h> #define fu(a, b, c) for (int a = b; a <= c; a++) #define fd(a, b, c) for (int a = b; a >= c; a--) using namespace std; int a[10],dp[10][10][2],n,q,cnt; int dfs(int pos,int sta,int pre,int limit) { if(pos==-1) return sta; if(!limit&&dp[pos][sta][pre]!=-1) { return dp[pos][sta][pre]; } int up=limit?a[pos]:9,tmp=0; fu(i,0,up) { int nsta=sta+(i==q); if(!q&&!pre) nsta=sta; tmp+=dfs(pos-1,nsta,i||pre,limit&&i==a[pos]); } if(!limit) dp[pos][sta][pre]=tmp; return tmp; } int solve(int x) { cnt=0; memset(dp,-1,sizeof dp); while(x) { a[cnt++]=x%10; x/=10; } return dfs(cnt-1,0,0,1); } int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n>>q; cout<<solve(n)<<'\n'; }
-
42019-08-18 15:16:54@
还是先分析思路:
1. 输入数据,终止点和查找字符
2. for循环判断1. 定义临时判断数据temp,将它的值设为控制器i的值
2. while循环1. 条件:temp > 0(原因后面再说)
2. 如果temp的末位是x,则ans++,然后temp去掉末位继续判断(原因知道了吧)
3.输出ans//C++ #include <iostream> using namespace std; int main() { int n,x,ans = 0; cin >> n >> x; for(int i = 1;i <= n;i++) { int temp = i; while(temp > 0) { if(temp % 10 == x) { ans++; } temp /= 10; } } cout << ans << endl; }
这题比较简单,稍微有些基础的人就可以做出来
祝大家AC!
点赞吧! -
12021-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)
-
12020-12-22 16:33:47@
我永远爱CSDN
https://blog.csdn.net/beguile/article/details/103635707 学的函数
Python 永远的神
三行哈哈哈哈TempNum = input().split(' ') list1 = str(list(range(1,int(TempNum[0])+1))) print(list1.count(TempNum[1]))
所以python永远的神(bushi)
暴力(会超时)TempStr = input() TempNum = TempStr.split(' ') n = int(TempNum[0]) x = int(TempNum[1]) ans = 0 for i in range(1,n+1): Temp = i while(Temp>0): if (Temp%10==x): ans+=1 Temp//=10 print(ans)
-
12020-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-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-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; }
-
02018-03-27 19:33:26@
#include<iostream>
#include<cstdio>
using namespace std;int main() {
int n, num, i, t, a;
int sum = 0;
scanf("%d %d", &n, &num);
t = n;
for(i = 1; i <= n; i++) {
a = i;
while(a) {
if(a%10==num)
sum++;
a /= 10;
}
}
printf("%d", sum);
} -
02018-03-18 20:26:13@
纯模拟题,建议C、C++蒟蒻练手。
#include<bits/stdc++.h> using namespace std ; //Vijos P1848 int x , y , ans ; int num(int n) { int ans = 0 ; while (n > 0)//枚举n的每一位上的数 { if (y == n % 10) ans ++ ;//求个数 n /= 10 ; } return ans ;//返回个数 } int main() { cin >> x >> y ; for (int i = 1 ; i <= x ; i ++) { ans += num(i) ;//枚举,累加个数 } cout << ans ; return 0 ; }
信息
- ID
- 1848
- 难度
- 5
- 分类
- (无)
- 标签
- 递交数
- 14768
- 已通过
- 5192
- 通过率
- 35%
- 被复制
- 18
- 上传者