单点时限: 2.0 sec
内存限制: 256 MB
给定一个整数 n (1<n≤100),计算 n 的所有因子(不包括 1 与自身)的平方和。
例如:输入 n 的值为 56,56 的因子有:2,28,4,14,7,8,所有因子的平方和为 1113。
输入格式
第 1 行为一个整数 ()T(1≤T≤10)为问题数。
接下来T行,每行输入一个整数 n(1<n≤100)。
输出格式
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0:
等),然后在一行中输出n的所有因子(不包括1与自身)的平方和。
样例
input
3 56 7 10
output
case #0: 1113 case #1: 0 case #2: 29
#include <iostream>
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
class SingleJob {
public:
int value;
set<int> yinzi;
int sum = 0;
};
int main() {
int jobs, temp;
SingleJob J[10];
// 输入
cin >> jobs;
for(int i = 0; i < jobs; i++) {
cin >> J[i].value;
}
// 输出
for(int i = 0; i < jobs; i++) {
cout << "case #" << i << ":" << endl;
for(int j=2; j<J[i].value; j++){
if(J[i].value % j == 0){
if(J[i].yinzi.find(j) == J[i].yinzi.end()){ //if not find, insert.
J[i].sum += j*j;
J[i].yinzi.insert(j);
}
}
}
cout << J[i].sum << endl;
}
return 0;
}