// https://acm.ecnu.edu.cn/problem/2946/
#include <iostream>
using namespace std;
void getDivides(int n) {
for (int i = 2; i <= n / i; i ++) {
if (n % i == 0) {
int s = 0;
while (n % i == 0) {
n /= i;
s ++;
}
printf("(%d,%d)", i , s);
}
}
if (n > 1) printf("(%d,%d)", n , 1);
puts("");
}
int main() {
int T;
cin >> T;
while (T --) {
int n;
cin >> n;
getDivides(n);
}
return 0;
}
其实不用这么麻烦,比较符合Python风格的思路应该是所有质因数生成列表1,再通过集合为中介去重然后排序保存为列表2,最后用自带的count函数得到列表2内每个元素在列表1中出现的次数
现在最符合Python风格的思路是调用
collections.Counter
了(我不确定两年前有没有这个东西可用for example:
最快速度是kangaroo 0.284