D 数位平均
作者:互联网
题目描述
给你一个整数nn,请你计算该整数前10个十进制位上的数字的平均值,将该整数中大于该平均值的十进制位置为0,并将其输出。
例如:给定的整数nn为12345678
,其前10个十进制位上的数字为0
,0
,1
,2
,3
,4
,5
,6
,7
,8
,则nn的前10个十进制位上的数字之和为0+0+1+2+⋯+8=360+0+1+2+⋯+8=36,平均值为3.6
,将该整数中大于3.6
的十进制位置为0后得到:0012300000
,则输出其表示的整数12300000
。
输入
输入一个小于10101010的正整数nn。
输出
输出一个没有前导0的正整数,表示将nn中大于前10个十进制位数字平均值的十进制位置0后的结果。
输入样例1
435261798
输出样例1
430201000
输入样例2
9999999999
输出样例2
9999999999
输入样例3
1
输出样例3
0
HINT
为了避免浮点误差所带来的影响,你的程序应尽量避免使用浮点类型的变量。
题解
#include <stdio.h>
int main()
{
long long n;
int num, i, sum = 0, arr[10], j = 0;
scanf("%lld", &n);
num = n;
for (i = 0; i < 10; i++)
{
sum += n % 10;
arr[i] = n % 10;
n /= 10;
}
for (i = 9; i >= 0; i--)
{
if (10 * arr[i] >sum)
{
if (j != 0)
{
printf("0");
j++;
}
}
else
{
if (arr[i] != 0)
{
printf("%d", arr[i]);
j++;
}
else
{
if (j != 0)
{
printf("%d", arr[i]);
j++;
}
}
}
}
if (j == 0)
printf("0");
return 0;
}
标签:10,arr,nn,输出,样例,平均,十进制,数位 来源: https://blog.csdn.net/m0_60762875/article/details/120496917