题解
2025-11-08 21:33:19
发布于:广东
11阅读
0回复
0点赞
思路:
理解幸运数的定义:
对正整数的每一位进行处理:偶数位不变,奇数位需按规则变换(个位为第 1 位,十位为第 2 位,以此类推)。
奇数位变换规则:数字乘 7,若结果 > 9 则反复将各位数相加,直到结果≤9。
所有位处理完成后,计算新数的各位和,若和是 8 的倍数,则原数是幸运数。
步骤拆解:
逐位提取原数的每一位,区分奇偶位。
对奇数位执行变换操作,偶数位保持不变。
计算变换后所有位的总和,判断是否为 8 的倍数。
关键技巧:
提取数位时,从个位(第 1 位)开始,用取余和除法操作实现。
奇数位变换可通过循环实现 “各位数相加至≤9” 的逻辑。
代码:
#include<bits/stdc++.h>
using namespace std;
long long f(long long n){
int sum=0;
while(n!=0){
sum+=n%10;
n=n/10;
}
return sum;
}
int main(){
int n;
cin>>n;
long long a[n];
for(int i=0;i<n;i++)cin>>a[i];
for(int i=0;i<n;i++){
int cnt=0,sum=0;
while(a[i]!=0){
int b=a[i]%10;
cnt++;
if(cnt%2){
b*=7;
while(b>=10){
b=f(b);
}
}
sum+=b;
a[i]/=10;
}
if(sum%8==0){
cout<<"T"<<endl;
}
else{
cout<<"F"<<endl;
}
}
}
这里空空如也





有帮助,赞一个