提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
给定一个 k 位整数
请编写程序统计每种不同的个位数字出现的次数。例如:给定 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
一、C语言解答
#include <stdio.h>
#define MAXSIZE 1000
int main()
{
char numStr[MAXSIZE]; //int型的数放不下1000位的数字,故采用字符数组
int num[10] = {0};
int i, n, temp;
scanf("%s", numStr);
for (i = 0; numStr[i]!='\0'; i++)
{
num[numStr[i]-'0']++; //字符‘0’-‘9’通过减去'0'可以实现将单引号去掉(转化为对应的int型数据)
}
for (i = 0; i < 10; i++)
{
if (num[i] != 0)
{
printf("%d:%d\n", i, num[i]);
}
}
return 0;
}
二、Python解答
snum = input()
list = [0,0,0,0,0,0,0,0,0,0]
for i in snum:
list[eval(i)] += 1;
for i in range(len(list)):
if list[i] != 0:
print("{0:}:{1:}".format(i, list[i]))
总结
提示:当数值过大时要考虑int型是否可以放的下,一般大数可以用数组来存放,再进行处理。在使用Python语言时,可以巧妙地运用eval()函数和列表的下标访问来将一个大数看作字符串,然后通过下标一个一个的访问每一位上的数值。注意:从字符串中取出的数据类型也是字符串类型,要获得整形,需用eval()函数来去掉“”号。