PAT乙级1021 || 个位数统计(CC++)

    xiaoxiao2022-07-07  226

    【欢迎关注微信公众号:计算机黑科学大全,在对话框回复:PAT乙级真题】获取全部真题详解及代码示例

    个位数统计

    题目描述:

    给定一个 k 位整数 N=d(k−1) 1 0 k − 1 10^{k−1} 10k1+⋯+d(1) 1 0 1 10^1 101+d(0) (0≤d(i) ≤9, i=0,⋯,k−1, d(k−1) >0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。

    输入格式:

    每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。

    输出格式:

    对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在N 中出现的次数 M。要求按 D 的升序输出。

    输入样例:

    100311

    输出样例:

    0:2 1:3 3:1

    题目来源:PAT乙级1021 作者:CHEN, Yue 单位:浙江大学

    问题解决:

    解题思想

    N为不超过 1000 位的正整数,显然不能用单个变量来存N的值,可用字符数组存入N的每一位;输入时遇到换行即输入结束;设置一个整型数组coun[10]来统计各位数字出现的次数;个数为0个的数字不输出。

    代码示例(C/C++)

    小提示:请将以下代码保存为.cpp格式(C++程序)左右滑动代码可查看全部内容

    #include <cstdio> #define MAXN 1001 using namespace std; int main() { char num[MAXN];//用字符数组存入输入的大数 int i = 0; num[i] = getchar(); while(num[i] != '\n'){//遇到换行即输入结束 i++; num[i] = getchar(); } i = 0; int coun[10] = {0};//统计数组 while(num[i] != '\n'){ int n = num[i] - '0';//字符转化为数字 coun[n]++; i++; } for(i = 0; i < 10; i++){ if(coun[i] != 0){//个数为0个的数字不输出 printf("%d:%d\n",i,coun[i]); } } return 0; }

    最新回复(0)