逐位拆分四位数,判断个位是否大于其余三位之和。
OJ: noi_openjudge
题目 ID: ch0105-26
难度:入门
标签:模拟数位python
日期: 2026-07-30 23:01
题意
给出
思路
把每个数当作四个字符组成的字符串。将四个字符转换为数字后,前三位的和是 sum(digits[:3]),最后一位是 digits[3],直接比较即可。
answer += condition 利用了 Python 中 True 会按整数 1、False 会按整数 0 参与运算,正好完成条件计数。
代码
Python代码
python
count = int(input())
numbers = map(str, input().split())
answer = 0
for number in numbers:
digits = list(map(int, number))
answer += digits[3] > sum(digits[:3])
print(answer)C++代码
cpp
#include <cstdio>
int main(){
int n,i,a;
scanf("%d",&n);
int cnt =0;
for (i=1;i<=n;i++){
scanf("%d",&a);
int t1 = a % 10;
a = a/10;
int t2 = a % 10;
a = a/10;
int t3 = a % 10;
a = a/10;
int t4 = a % 10;
if( t1>t2+t3+t4){
cnt++;
}
}
printf("%d\n",cnt);
return 0;
}复杂度
每个数只处理四个数位,时间复杂度为
总结
当题目只关心十进制的各个数位时,字符串下标往往比反复除以