【PAT B1021】个位数统计 (15 分)

发布时间:2026/7/28 17:37:05

【PAT  B1021】个位数统计 (15 分) 题目描述给定一个 k 位整数 Nd​k−1​​10​k−1​​⋯d​1​​10​1​​d​0​​ (0≤d​i​​≤9, i0,⋯,k−1, d​k−1​​0)请编写程序统计每种不同的个位数字出现的次数。例如给定 N100311则有 2 个 03 个 1和 1 个 3。输入格式每个输入包含 1 个测试用例即一个不超过 1000 位的正整数 N。输出格式对 N 中每一种不同的个位数字以D:M的格式在一行中输出该位数字D及其在 N 中出现的次数M。要求按D的升序输出。输入样例100311输出样例0:2 1:3 3:1一开始我就是很死板的从0~9一个一个判断的emmmm代码写的特别长。。。AC代码#includeiostream #includecstdio #includestring using namespace std; int main(){ string s; cins; int count00,count10,count20,count30,count40,count50,count60,count70,count80,count90; int lens.length(); for(int i0;ilen;i){ switch(s[i]-0){ case 0: count0; break; case 1: count1; break; case 2: count2; break; case 3: count3; break; case 4: count4; break; case 5: count5; break; case 6: count6; break; case 7: count7; break; case 8: count8; break; case 9: count9; break; } } if(count0) cout0:count0endl; if(count1) cout1:count1endl; if(count2) cout2:count2endl; if(count3) cout3:count3endl; if(count4) cout4:count4endl; if(count5) cout5:count5endl; if(count6) cout6:count6endl; if(count7) cout7:count7endl; if(count8) cout8:count8endl; if(count9) cout9:count9endl; }然后看了看别人写的QAQ我嗯定义一个count[10]数组来统计要简短了太多啊~#include cstdio #include cstring int main() { char str[1001]; scanf(%s,str); int lenstrlen(str); int count[10]{0}; for(int i0;ilen;i){ count[str[i]-0]; } for(int i0;i10;i){ if(count[i]!0){ printf(%d:%d\n,i,count[i]); } } return 0; }

相关新闻