uva 10892
试了一下纯暴力 结果过了 无话可说 应该有更好的方法......
/************************************************************************* > Author: xlc2845 > Mail: xlc2845@gmail.com > Created Time: 2013年10月26日 星期六 10时15分23秒 ************************************************************************/ #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <vector> #include <cstring> #include <algorithm> #define maxn 210 #define INF 0x7fffffff #define longlong LL using namespace std; int gcd(int a, int b) { return b == 0 ? a : gcd(b, a%b); } int lcm(int a, int b) { return a / gcd(a, b)*b; } int n, a[1000000], k, ans; int main() { while(scanf("%d",&n) && n) { k = ans = 0; for(int i = 1; i <= sqrt(n+0.1); i++) { if(n%i == 0) { a[k++] = i; a[k++] = n/i; } } if(a[k-1] == a[k-2]) //不能少 k--; for(int i = 0; i < k; i++) for(int j = i; j < k; j++) if(lcm(a[i], a[j]) == n) ans++; printf("%d %d\n", n, ans); } return 0; }