行者无疆 始于足下 - 行走,思考,在路上
zoj 1577
简单题,题目大意是给定两个数a、b,求x、y使得gcd(x, y) = a, lcm(x, y) = b,问由多少对这样的(x, y),其中gcd(x, y)为x, y的最大公约数,lcm(x, y)为x,y的最小公倍数。解题思路主要利用[tex]x \times y = gcd(x, y) \times lcm(x, y)[/tex]就行了。WA了两次是因为没看清楚题意"x and y, one line for each test.",太马虎了。代码如下:
#include <stdio.h> #include <math.h> long gcd(long a,long b) { return b ? gcd(b, a%b) : a; } long lcm(long a, long b) { return a / gcd(a, b) * b; } int main(int argc, char *argv[]) { long a, b; long m; int sum; while(scanf("%ld%ld", &a, &b) != EOF) { if (a == b) { sum = 1; } else { m = a * b; sum = 0; int i; for (i = 1; i < sqrt(m); ++i) { if (((m % i) == 0) && (gcd(i, m/i) == a)) { sum += 1; } } sum *= 2; } printf ("%d\n",sum); } return 0; }
顺便,用了两个月的fvwm-crystal,感觉虽然轻量,但是有些细节颇有不便之处,比如每次新开窗口的时候窗口的大小和位置都“不太确定”——就是有时候窗口会覆盖底下的panel、有时候整个窗口又比整个屏幕都大……恰逢前天晚上兴奋无眠,因此便邪恶的敲了下面一条命令:
sudo emerge -av gnome-light
编译过程比较顺利,又陆续装了gdm, gnome-do等小工具,配上Mac4Lin的主题,现在整个桌面看起来还是蛮pp的:
还有一个小问题就是gtk+和QT程序风格二异。我的解决方案是安装kde的control center:
sudo emerge -av systemsettings
然后在widget style中选择gtk+风格,如下图所示:
效果还算不错。其余的解决方案可以参考:
就是这样。嘿。
zoj 1284
简单题。题目大意就是判断一个数是否为Perfect number。可是我竟然三次才ac,原因是没有考虑到数字为1的时候。
求真因数和的时候可以考虑质数判断的算法,循环到[tex]\sqrt{n}[/tex]就行了。代码很长很菜:
#include <stdio.h> #include <math.h> int get_sum(int number) { int i; int sum = 0; for (i = 1; i < sqrt(number); ++i) { if (number % i == 0) { sum += i + number / i; } } if ((int)sqrt(number) * (int)sqrt(number) == number) { sum += sqrt(number); } sum -= number; return sum; } int main(int argc, char *argv[]) { int number; printf ("PERFECTION OUTPUT\n"); while (scanf("%d", &number) && number) { int sum = get_sum(number); if (sum < number) { printf ("%5.0d DEFICIENT\n", number); } else if (sum == number) { printf ("%5.0d PERFECT\n", number); } else printf ("%5.0d ABUNDANT\n", number); } printf ("END OF OUTPUT\n"); return 0; }