HDUacm
寂寞灵魂
这个作者很懒,什么都没留下…
展开
-
杭电HDUacm2098
要判断重复值,a+b=n,判断a、n-a是否是素数#include#include#include#include using namespace std;int Is_Prime(int n){ int r,i; if(n<=1) return 0; for(i=2;i<=int(sqrt(float(n)));i++) if(n%i==0) break; i原创 2015-02-27 15:24:00 · 630 阅读 · 0 评论 -
HDUacm2095
深入理解按位异或运算符参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。即: 0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0按位异或的3个特点:(1) 0^0=0,0^1=1 0异或任何数=任何数(2) 1^0=1,1^1=0 1异或任何数-任何原创 2015-02-27 14:58:32 · 513 阅读 · 0 评论 -
杭电HDUacm2037
贪心算法,同类于看电视的还有老鼠拿钱和猫换食物。#include #include using namespace std;struct time { int s; int e; bool operator < (const time &A) const { return e < A.e; }}buf[101];int main() { int n, i,原创 2015-02-27 15:52:18 · 749 阅读 · 0 评论 -
杭电acm2069
暴力解法,同百钱买白鸡#include int main() { int n, i, j, k, l, m, ans; while(scanf("%d", &n) != EOF) { if(n==0) { printf("1\n"); continue; } ans = 0; for(i=0; i<=n; i++) for(j=0; j*5<=n-原创 2015-03-01 15:54:21 · 1625 阅读 · 0 评论 -
杭电acm2058
J 如果不这样写会超市#include #include int main() { int n, m, i, j; while(scanf("%d%d", &n, &m) != EOF) { if(n==0 && m==0) break; for(j=(int)sqrt((double)(2*m)); j>=1; j--) { i = (2*m/j+1原创 2015-03-01 16:19:25 · 1430 阅读 · 0 评论 -
杭电acm2520
ans = ((m + k) / 2 * n) % 10000;写成这样AC,ans = (n / 2 * (m+k)) % 10000;写成这样WA。未解#include int main() { int n, m, k, ans, t, i; while(scanf("%d", &t) != EOF) { for(i=0; i<t; i++) { scan原创 2015-03-02 15:18:11 · 755 阅读 · 0 评论 -
杭电acm2040
#include int main() { int n, i, j, a, b, sum1, sum2; while(scanf("%d", &n) != EOF) { for(i=0; i<n; i++) { scanf("%d%d", &a, &b); sum1 = 0; sum2 = 0; for(j=1; j<a; j++) if(a%原创 2015-03-01 17:00:30 · 1664 阅读 · 1 评论 -
杭电acm2053
#include int main() { int n, i, flag; while(scanf("%d", &n) != EOF) { flag = 1; // 1 表示 off, -1 表示 on for(i=1; i<=n; i++) { if(n%i==0) flag = -flag; } if(flag == 1) printf原创 2015-03-01 16:31:23 · 1510 阅读 · 0 评论 -
杭电acm2027
#include #include int main() { int n, i, j, l, num1, num2, num3, num4, num5; char s[101]; while(scanf("%d", &n) != EOF) { for(i=0; i<n; i++) { num1 = 0; num2 = 0; num3 = 0; num4原创 2015-03-02 16:44:28 · 989 阅读 · 0 评论 -
杭电acm2041
#include int main() { int n, i, m, a[45]; while(scanf("%d", &n) != EOF) { a[1] = 0; a[2] = 1; a[3] = 2; for(i=4; i<=40; i++) a[i] = a[i-1] + a[i-2]; for(i=0; i<n; i++) { scanf("%原创 2015-03-02 17:04:25 · 1912 阅读 · 0 评论 -
杭电acm1097
我起先写的是在循环中对100取余,然后对10取余输出答案,可是提交后超时。下面是转载的。#include int calc(int a, int b){ if(a==0 || a==1 || a==5 || a==6) return a; if(a==2) { if(b%4==1) return 2; if(b%4==2) retu转载 2015-03-04 19:52:08 · 1167 阅读 · 0 评论 -
杭电acm2036
http://acm.hdu.edu.cn/showproblem.php?pid=2036利用了已知三角形的三个顶点的坐标求面积的方法。转载 2015-03-08 15:56:52 · 1697 阅读 · 0 评论 -
杭电acm2503
min = s1<s2? s1 : s2; for(j=2; j<min/2; j++) { if(!(s1%j) && !(s2%j)) { s1 /= j; s2 /= j; j = 1; } }这段代码是主要部分。#include int main() { int n, i, j, a, b, c, d, s1, s原创 2015-03-02 17:55:50 · 628 阅读 · 0 评论 -
杭电acm2060
#include int main() { int n, cScore, oScore, m, ans, i,d[6]={2, 3, 4, 5, 6, 7}; scanf("%d", &n); while(n--) { ans = 0; scanf("%d%d%d", &m, &cScore, &oScore); if(m==6) { ans = 27; }原创 2015-03-17 21:26:28 · 1264 阅读 · 0 评论 -
杭电acm1106
sort(a, a+ids+1);这里要+1#include #include #include using namespace std;int main(void) { int a[1001], i, flag, ids; char s[1001]; while(scanf("%s", s) != EOF) { flag = 0; i = 0; ids =原创 2015-03-10 11:11:22 · 1588 阅读 · 0 评论 -
杭电acm2061
我把cre,sco写成 int 类型会超时,不解。#include int main() { int n, k, flag; double a1, a2, cre, sco; scanf("%d", &n); while(n--) { a1 = 0.0; a2 = 0.0; flag = 0; scanf("%d", &k); w原创 2015-03-17 22:07:41 · 1152 阅读 · 0 评论 -
杭电acm2021
#include int main() { int n, sum, a, b, c, d, e, f, i, temp ,ans; while(scanf("%d", &n) != EOF) { if(n==0) break; sum = 0; for(i=0; i<n; i++) { scanf("%d", &temp); sum += temp / 100;转载 2015-03-12 14:35:01 · 2338 阅读 · 0 评论 -
杭电acm2018
简单的递归#include int main() { int n, a[55]={1, 2, 3, 4, 6}, i; for(i=5; i<55; i++) a[i] = a[i-1] + a[i-3]; while(~scanf("%d", &n)) { if(n==0) break; printf("%d\n", a[n-1]); } return原创 2015-03-12 16:20:37 · 2168 阅读 · 0 评论 -
杭电acm2015
c语言中任何非零值在需要布尔值的地方都被看做true#include int main(void){ int i, n, m, b, c; while (scanf("%d%d", &n, &m) != EOF) { b = 2; c = 0; for (i = 0 ; i < n / m ; i++)转载 2015-03-12 15:47:05 · 1544 阅读 · 0 评论 -
杭电acm2022
fabs()是对浮点数取绝对值,abs()是对整数取绝对值。printf("%d %d %.0lf\n", a+1, b+1, max);%.0lf#include #include int main() { int n, m, i, j, a, b; double d, max; while(~scanf("%d%d", &m, &n)) { max = 0原创 2015-03-12 23:35:51 · 1499 阅读 · 0 评论 -
杭电acm2085
简单的递归。我打算复试结束了再看算法。现在靠做题练习。#include int main() { int n, i; __int64 a[34]={1, 3, 11, 41}, b[34]={0, 1, 4, 15}; for(i=4; i<34; i++) { a[i] = a[i-1] * 3 + b[i-1] * 2; b[i] = a[i-1] + b[原创 2015-03-13 13:23:31 · 538 阅读 · 0 评论 -
杭电acm2046
#include int main() { int n, i; __int64 a[50]={1, 2, 3}; for(i=3; i<50; i++) { a[i] = a[i-1] + a[i-2]; } while(~scanf("%d", &n)) { printf("%I64d\n", a[n-1]); } return 0;}原创 2015-03-13 13:38:20 · 1014 阅读 · 0 评论 -
杭电acm2045
a[2] = 6;#include int main() { int n, i; __int64 a[50]={3, 6, 6}; for(i=3; i<50; i++) a[i] = a[i-1] + a[i-2] * 2; while(~scanf("%d", &n)) { printf("%I64d\n", a[n-1]); } return 0;原创 2015-03-13 13:51:59 · 976 阅读 · 0 评论 -
杭电acm2024
第31行的getchar();如果写了就是WA,不写就是AC。但是第九行的getchar();一定要写。函数gets的原型为:char*gets(char*buffer); 在 stdio.h中定义,如果要程序中用到此函数需包含#includegets()函数用来从标准输入设备(键盘)读取字符串直至接受到换行符或EOF时停止结束,并将读取的结果存放在buff原创 2015-03-13 00:24:14 · 2684 阅读 · 2 评论 -
杭电acm2091
PE了好多次。' * ‘'在格式化输入输出中的作用。在scanf()中,用%*#,就代表读入一个#的数据,但不处理。比如:scanf("%c%*c%c", &a, &b);输入ABC,此时,变量a='A', c='C'。而中间的'B',只是读入,没有做任何处理。在printf()中,%*#用来设定场宽。我们平时用%2d一类的转义字符来代表输出整形d时场宽为2个字符,但这种方原创 2015-03-13 11:33:01 · 1645 阅读 · 0 评论 -
杭电acm2048
最后数据会超过 2 ^32 - 1。输出%用%%。#include #include int main() { int n, i, k; __int64 a[21][2]={{1, 0}, {1, 0}, {2, 1}}; for(i=3; i<21; i++) { a[i][0] = i * a[i-1][0]; a[i][1] = (i-1) * (a[i-1]原创 2015-03-13 13:06:11 · 912 阅读 · 0 评论 -
杭电acm2044
#include int main() { int n, i, k, b; __int64 a[50]={1, 2, 3}; for(i=3; i<50; i++) a[i] = a[i-1] + a[i-2]; while(~scanf("%d", &n)) { while(n--) { scanf("%d%d", &k, &b); printf("%原创 2015-03-13 14:11:08 · 828 阅读 · 0 评论 -
杭电acm2083
从n / 2处开始距离最短。#include #include int cmp(const int *a, const int *b) { return *a - *b;}int main() { int m, n, i, ans, a[10001]; while(~scanf("%d", &m)) { while(m--) { ans = 0; scan原创 2015-03-14 17:20:17 · 1129 阅读 · 1 评论 -
杭电acm2047
#include #include int main() { int n, i; __int64 d[40][2]={ {1, 2} }; /*d[i][0] indicate the sequence's last char is not O d[i][1] opposite*/ for(i=1; i<40; i++) { d[i][0] = d[i-1][1];原创 2015-03-13 22:24:10 · 1574 阅读 · 0 评论 -
杭电acm2049
组合 + 错排错排公式 的 d [ i ] = (i - 1) * ( d[i - 1] + d[ i - 2] ); double i, t1=1, t2=1, t3=1;我开始写的是 int ,总是WA,写成 double 就AC了,这种情况碰到太多了。#include double cal(int n, int m) { double i, t1=1, t2=1, t3原创 2015-03-18 11:04:36 · 1785 阅读 · 0 评论 -
杭电acm4510
printf("%02d:%02d:%02d\n", h, m, s);因为这个格式WA了。让mm++,hh++比分析m,h是否为零简单。#include int main() { int h, m, s, hh, mm, ss; int n; scanf("%d", &n); while(n--) { scanf("%d:%d:%d %d:%d:%d", &h原创 2015-09-28 15:44:32 · 368 阅读 · 0 评论 -
杭电acm1029
#include #include int main() { int n, i, temp, max, flag, id; int book[1000000]; while(~scanf("%d", &n)) { memset(book, 0, sizeof(book)); max = -1; flag = 0; id = -1; for(i=0; i<n;原创 2015-11-04 14:43:30 · 950 阅读 · 0 评论 -
杭电acm1003
WA了好几次,原因是开始写的是int t, n, sum, max, start, end, i, j, temp;int flag=0;改成这样就AC了:int t, n, sum, max, start, end, i, j, temp, flag;#include int main() { int t, n, sum, max, start, end, i, j转载 2015-10-03 17:36:15 · 796 阅读 · 0 评论 -
杭电acm2201
#include int main() { double ans, n, m; while(~scanf("%lf%lf", &n, &m)) { ans = 1 / n; printf("%.2f\n", ans); } return 0;}原创 2015-10-05 13:55:24 · 488 阅读 · 0 评论 -
杭电acm2098
用c编译器编译错误N遍,换用c++AC了#include bool ju(int a);int main() { int n, i, ans; while(~scanf("%d", &n) && n) { ans = 0; for(i=2; i<=n/2; i++) { if(ju(i) && ju(n-i)) { ans ++; if(i ==原创 2015-10-05 14:43:45 · 1043 阅读 · 0 评论 -
杭电acm2566
#include int main() { int i, j, t, n, m, ans; scanf("%d", &t); while(t--) { scanf("%d%d", &n, &m); ans = 0; for(i=0; i<=n; i++) for(j=0; j<=n-i; j++) { if(i + 2*j + 5*(n-i-j) == m)原创 2015-10-05 13:39:49 · 386 阅读 · 0 评论 -
杭电acm2212
水平很低,我是现在电脑上算好,直接提交结果的。电脑算了多少时间?很久。#include #define SIZE 2147493647int recursion(int a);int main() { int i, sum, temp; for(i=1; i<=SIZE; i++) { sum = 0; temp = i; while(temp) { sum原创 2015-10-05 15:19:04 · 423 阅读 · 0 评论 -
杭电acm1098
对任意的 x,f(x)都能整除65,取 x = 1。我也不知道为什么 a 的范围是 0 ~ 65.#include int main() { int k, a, i, flag; while(~scanf("%d", &k)) { for(i=0; i<66; i++) { if((18+k*i)%65==0) break; } if(i<66) p原创 2015-10-04 15:24:29 · 1050 阅读 · 0 评论 -
杭电acm1061
这最后一个数只是最后个位数反复相乘的结果,而这结果只在0与9之间,我们只要计算出它的循环长度即可。#includeusing namespace std;int main(){ int n; cin>>n; while (n--) { int m; cin>>m; int a[转载 2015-10-04 14:31:54 · 402 阅读 · 0 评论 -
杭电acm1302
#include int main() { int i;//i应定义为int double h, u, d, f, lost, temp, len;//这几个要定义为double while(scanf("%lf%lf%lf%lf", &h, &u, &d, &f)!=EOF && h) { i = 1; len = 0; lost = u * f / 100;原创 2015-10-04 16:43:38 · 568 阅读 · 0 评论