vijosP1848 记数问题

it2025-11-14  4

自答【119ms内存456.0 KiB】

#include<iostream>using namespace std;int num = 0;void judge(int n, int x) { int t = n % 10; if (n != 0 || t != 0) if (x == t || x == n) { num++; t = n / 10; judge(t, x); } else { t = n / 10; judge(t, x); }}int main(){ int n, x; cin >> n >> x; for (int i = 1; i <= n; i++) { judge(i, x); } cout << num;

return 0;}

优解:

#include <iostream>    using namespace std;    int main()  {      int n, x, ans, v;        cin >> n >> x;        ans = 0;      for(int i=1; i<=n; i++) {          v = i;          while(v) {              if(v % 10 == x)                  ans++;              v /= 10;          }      }        cout << ans << endl;        return 0;  

优解2:(利用sprintf)

#include<stdio.h>  #include<string.h>  #include<algorithm>  using namespace std;  int main()  {      int n,x;      scanf("%d%d",&n,&x);      char map[1000001];      int ans=0;      for(int i=1;i<=n;i++)      {          sprintf(map+1,"%d",i);          for(int j=1;map[j];j++)          {              if(map[j]==(x+48))              {                  ans++;              }          }      }      printf("%d\n",ans);      return 0;  

转载于:https://www.cnblogs.com/ruoh3kou/p/7650439.html

相关资源:数据结构—成绩单生成器
最新回复(0)