基本思想:
首先确定边界没啥问题;
关键在于后续的枚举上,直接打表可以避免很多重复计算的问题;
关键点:
打表和枚举,枚举时候不用考虑位数,直接一直取余即可;
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h> #include<algorithm> #include<cstring> #include<map> using namespace std; vector<int>vec(10); void init() { for (int i = 0; i < vec.size(); i++) { vec[i] = pow(i, 5); } } int main(){ init(); for (int i = 2; i < 999999; i++) { int cnt = 0; int temp = i; while (temp!=0){ cnt += vec[temp % 10]; temp /= 10; } if (cnt == i) cout << i << endl; } return 0; }
蓝桥杯 1500: [蓝桥杯][算法提高VIP]分数统计 Easy only once *数位各数字统计和打表问题
原文:https://www.cnblogs.com/songlinxuan/p/12295498.html