1 条题解
-
0
G4001 [GESP202306 四级] 幸运数 题解
知识点:数位处理、模拟、整除判断。
解题思路
从个位开始编号,奇数位置数位乘7,再不断求各位和直到成为一位数;偶数位置不变。所有处理值求和,判断能否被8整除。
为什么正确
逐位的变换与幸运数规则一致,最终取模完整判断定义。
易错点
位置从右侧个位开始;乘7后可能需要不止一次求数位和。
复杂度
时间O(总位数),空间O(单个数字位数)。
参考代码(C++17)
#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin>>n; while(n--) { string s; cin>>s; int sum=0; for(int j=0;j<(int)s.size();j++) { int v=s[s.size()-1-j]-'0'; if(j%2==0) { v*=7; while(v>9) { int z=0; while(v) { z+=v%10; v/=10; } v=z; } } sum+=v; } cout<<(sum%8==0?"T":"F")<<"\n"; } }说明
本题解为配套教学整理,非官方题解。复杂度按本页参考实现计算,题库使用8个自行生成的测试点。
- 1