0
点赞
收藏
分享

微信扫一扫

UVA - 1225

Star英 2022-04-16 阅读 213
c++

UVA - 1225
穷举法:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int T;
    cin>>T;
    int a[10];
    int n,num;
    while(T--){
        cin>>n;
        memset(a,0,sizeof(a));//使用格式注意
        for(int i=1;i<=n;i++){
            num=i;
        while(num){
            a[num%10]++;
            num=num/10;
        }
      }
      for(int i=0;i<=9;i++){
        if(i!=0)
            cout<<" "<<a[i];
        else cout<<a[i];
      }
      cout<<endl;
    }
    return 0;
}

打表法:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int a[10000+1][10];//打表就是提前将所有情况都算好
    int num;
    memset(a,0,sizeof(a));
    for(int i=1;i<10000;i++){
        for(int j=0;j<10;j++){
            a[i][j]=a[i-1][j];//前一个数的情况加上这个数的情况
        }
        num=i;
        while(num){
            a[i][num%10]++;
            num/=10;
        }
    }
    int T;
    cin>>T;
    while(T--){
        int n;
        cin>>n;
        for(int i=0;i<10;i++){
            if(i!=0)
            cout<<" "<<a[n][i];
        else cout<<a[n][i];
        }
        cout<<endl;
    }
return 0;
}
举报

相关推荐

0 条评论