理解清楚题目,举几个简单的例子就可以知道怎么样解决了,比如长度为3的平方数125 * 125,平方末尾的数字只与25 * 25的结果的后面两位数字是相关的,与其他位上的数字是无关的,例如101 * 101平方末尾的两个数字只与01 * 01相乘的结果是有关的,所以我们只需要计算[4,99]的平方数字的末尾两位数字,加入到set集合中去重即可,最后set集合的长度就是最终平方末尾两位数字的所有可能。
#include<iostream> #include<unordered_set> using namespace std; typedef long long LL; int main() { unordered_set<int> map; for(int i = 4 ; i < 100 ; i++){ int cur = i*i%100; map.insert(cur); } cout<<map.size(); return 0; }
22