西工大noj答案解析完整编辑版.doc
-/西北工业大学POJ答案绝对是史上最全版(不止100题哦按首字母排序)1. “1“的传奇2. A+B3. A+B4. AB5. ACKERMAN6. Arithmetic Progressions7. Bee8. Checksum algorithm9. Coin Test10. Dexter need help11. Double12. Easy problem13. Favorite number14. Graveyard15. Hailstone16. Hanoi 17. Houseboat18. Music Composer19. Redistribute wealth20. Road trip21. Scoring22. Specialized Numbers23. Sticks24. Sum of Consecutive25. Symmetric Sort26. The Clock27. The Ratio of gainers to losers28. VOL大学乒乓球比赛29. 毕业设计论文打印30. 边沿与内芯的差31. 不会吧,又是A+B32. 不屈的小蜗33. 操场训练34. 插入链表节点35. 插入排序36. 插入字符37. 成绩表计算38. 成绩转换39. 出租车费40. 除法41. 创建与遍历职工链表42. 大数乘法43. 大数除法44. 大数加法45. 单词频次46. 迭代求根47. 多项式的猜想48. 二分查找49. 二分求根50. 发工资的日子51. 方差52. 分离单词53. 分数拆分54. 分数化小数55. 分数加减法56. 复数57. 高低交换58. 公园喷水器59. 韩信点兵60. 行程编码压缩算法61. 合并字符串62. 猴子分桃63. 火车站64. 获取指定二进制位65. 积分计算66. 级数和67. 计算A+B68. 计算PI69. 计算70. 计算成绩71. 计算完全数72. 检测位图长宽73. 检查图像文件格式74. 奖金发放75. 阶乘合计76. 解不等式77. 精确幂乘78. 恐怖水母79. 快速排序80. 粒子裂变81. 链表动态增长或缩短82. 链表节点删除83. 两个整数之间所有的素数84. 路痴85. 冒泡排序86. 你会存钱吗87. 逆序整数88. 排列89. 排列分析90. 平均值函数91. 奇特的分数数列92. 求建筑高度93. 区间内素数94. 三点顺序95. 山迪的麻烦96. 删除字符97. 是该年的第几天98. 是该年的第几天?99. 数据加密100. 搜索字符101. 所有素数102. 探索合数世纪103. 特殊要求的字符串104. 特殊整数105. 完全数106. 王的对抗107. 危险的组合108. 文件比较109. 文章统计110. 五猴分桃111. 小型数据库112. 幸运儿113. 幸运数字”7“114. 选择排序115. 寻找规律116. 循环移位117. 延伸的卡片118. 羊羊聚会119. 一维数组”赋值“120. 一维数组”加法“121. 勇闯天涯122. 右上角123. 右下角124. 圆及圆球等的相关计算125. 圆及圆球等相关计算126. 程序员添加行号127. 找出数字128. 找幸运数129. 找最大数130. 整数位数131. 重组字符串132. 子序列的和133. 子字符串替换134. 自然数立方的乐趣135. 字符串比较136. 字符串复制137. 字符串加密编码138. 字符串逆序139. 字符串排序140. 字符串替换141. 字符串左中右142. 组合数143. 最次方数144. 最大乘积145. 最大整数146. 最小整数147. 最长回文子串148. 左上角149. 左下角1 “1“的传奇#include #include #include int main() int n,i,j,k=0,x=1,y,z,m,p,q,a,s=0; scanf(%d,&n);m=n;for(i=1;i12;i+)m=m/10;k+;if(m=0)break;q=n;k=k-1;for(a=1;a=2)s=s+x+z*k*(x/10);elses=s+z*k*(x/10);for(j=p;j=n;j+) m=j; for(i=1;i12;i+) x=m%10; if(x=1) s+;m=m/10; if(m=0) break; printf(%d,s);return 0;2 A+B#include int doubi(int n,int m) n=n+m; n=n%100; return n;int main() int t,i,a100,n,m; scanf(%d,&t); for (i=0;i=(t-1);i+) scanf(%d%d,&n,&m); ai=doubi(n,m); for (i=0;i=(t-1);i+) printf(%dn,ai); return 0;3 A+B#include int main()int A,B,sum;scanf(%d%d,&A,&B);sum=A+B; printf(%dn,sum); return 0;4 AB#include #include #include int main() char s100,q100; double a,b,c; int n=0,i; scanf(%lf%lf,&a,&b); c=a*b; sprintf(s,%.0lf,c); for(i=0;i=10) sprintf(q,%d,n); n=0; for(i=0;istrlen(q);i+) n=n+qi-48; printf(%d,n); return 0;5 ACKERMAN#include #include #include int ack(int x,int y) int n; if (x=0) n=y+1; return n; else if (y=0) n=ack(x-1,1); else n=ack(x-1,ack(x,y-1); return n;int main() int m,b; scanf(%d%d,&m,&b); m=ack(m,b); printf(%d,m); return 0;6 Arithmetic Progressions#include #include #include int g(int n) int i; if(n=1) return 0; if(n=2) return 1; if(n=3) return 1; for(i=2;i=c) break; return s;int main() int a,b,c,d100,i=0,n; while(1) scanf(%d%d%d,&a,&b,&c); if(a=0&b=0&c=0) break; di=f(a,b,c); i+; n=i; for(i=0;in;i+) printf(%dn,di); return 0;7 Bee#include #include int main() int A100,i=0,j,k,female=0,male=1,x; for(;i+)scanf(%d,&Ai);if(Ai=-1)break;for(j=0;ji;j+)female=0,male=1;for(k=1;kAj;k+)x=female;female=male;male=x+male+1;printf(%d %dn,male,female+male+1);return 0;8 Checksum algorithm#include #include #include int main()int i,n,t,j; char s100100; for(i=0;i+)gets(si);if(si0=#) break; n=i;for(i=0;in;i+)t=0;for(j=0;jstrlen(si);j+)if(sij=32) t=t;else t=t+(j+1)*(sij-64);printf(%dn,t); return 0;9 Coin Test#include #include int main() char A100000; int n,i=0,a=0,b=0,j; double x; while(1)scanf(%c,&Ai);if(Ai=n)break;i+;for(j=0;j0.003|x-0.5-0.003)printf(Fail);elseprintf(%d/%d,a,a+b);OH:return 0;10 Dexter need help#include int fun(int a)if(a=1) return 1;elsereturn fun(a/2)+1;int main()int a,b100,i=0,j;while(1) scanf(%d,&a); if(a=0)break;bi=fun(a);i+;for(j=0;ji;j+) printf(%dn,bj);return 0;11 Double#include #include #include int main() int a100,b100,i,j,n,t=0; for(i=0;i+) scanf(%d,&ai); if(ai=0) break; n=i; for(i=0;in;i+) bi=2*ai; for(i=0;in;i+) for(j=0;jn;j+) if(ai=bj) t+; printf(%d,t); return 0;12 Easy problem#include #include #include int main() int N,i,n,j=0; scanf(%d,&N); for(i=2;iN+1;i+) if(N+1)%i=0)j+; printf(%d,j/2); return 0;13 Favorite number#include #include #define MAXNUM 100000int prime_number = 0;int prime_listMAXNUM;bool is_primeMAXNUM;int ansMAXNUM + 2;int dpMAXNUM + 2;void set_prime() int i, j; memset(is_prime, 0, sizeof(is_prime); for (i = 2; i = MAXNUM / i) continue; for (j = i * i; j MAXNUM; j+=i) is_primej = 1; int main() int i, j, k,o=0,d100; memset(dp, -1, sizeof(dp); set_prime(); ans0 = 0; dp1 = 0; for (i = 1; i dpi + 1) dpi + 1 = dpi + 1; for (j = 0; j MAXNUM / prime_listj) break; k = i * prime_listj; if (dpk = -1 | dpk dpi + 1) dpk = dpi + 1; while (scanf(%d%d, &i, &j) = 2 & (i | j) do=ansj - ansi - 1; o+; for(i=0;io;i+) printf(%dn,di);14 Graveyard#include #include #include int main() int a100,b100,n,i,j; double s,p,l,t; for(i=0;i+) scanf(%d%d,&ai,&bi); if(ai=0&bi=0) break; n=i; for(i=0;in;i+) p=10000; if(bi%ai=0)printf(0.0000n);continue; t=10000/(double)ai); for(j=1;jai+bi;j+) l=10000/(double)(ai+bi); l=t-j*l; l=fabs(l); if(lp) p=l; s=(ai-1)*p; printf(%.4lfn,s); return 0;15 Hailstone#include #include #include int f(int n) int s=1; while(1) if(n=1) return s; else if(n%2=0) n=n/2,s+; else n=3*n+1,s+; int main() int n,m,i,j=0,t; scanf(%d%d,&m,&n); printf(%d %d,m,n); if(mn) t=m,m=n,n=t; for(i=m;ij) j=f(i); printf( %d,j); return 0;16 Hanoi #include #include #define M 70int startM, targeM;long long f(int *p, int k, int fina) if(k=0) return 0; if(pk=fina) return f(p,k-1,fina); return f(p,k-1,6-fina-pk)+(1LL(k-1);int main () long long ans; int n; while(scanf(%d,&n),n) int i; for(i=1;i=n;i+) scanf(%d,&starti); for(i=1;i=1&startc=targec;c-); if(c=0) printf(0n); continue; int other=6-startc-targec; ans=f(start,c-1,other)+f(targe,c-1,other)+1; printf(%lldn,ans); return 0;17 Houseboat#include #include #include #define pi 3.1415926int f(float x,float y) int i; for(i=0;i+) if(50*isqrt(x*x+y*y)*sqrt(x*x+y*y)*pi/2) break; return i;int main() int n,i,a100; float x,y; scanf(%d,&n); for(i=0;in;i+) scanf(%f%f,&x,&y); ai=f(x,y); for(i=0;in;i+) printf(%d %dn,i+1,ai); return 0;18 Music Composer19 Redistribute wealth#include #include #include int main() int a1000,b1000,n,i,j,s,sum,t,m,mid,c100,k=0; while(1) scanf(%d,&n); if(n=0) break; s=0; for(i=1;i=n;i+) scanf(%d,&ai); s=s+ai; m=s/n; b1=a1-m; b0=0; for(i=2;in;+i) bi=bi-1+ai-m; for(i=0;in;i+) for(j=0;jbj+1) t=bj,bj=bj+1,bj+1=t; mid=bn/2; sum=0; for(i=0;i=n-1;+i) sum=sum+fabs(mid-bi); ck=sum;k+; for(i=0;ik;i+) printf(%dn,ci); return 0;20 Road trip#include #include #include int f(int n) int a100,b100,i,s; for(i=0;in;i+) scanf(%d%d,&ai,&bi); s=a0*b0; for(i=1;in;i+) s=s+ai*(bi-bi-1); return s;int main() int n,c100,i=0; while(1) scanf(%d,&n); if(n=-1) break; ci=f(n); i+; n=i; for(i=0;in;i+) printf(%dn,ci); return 0;21 Scoring#include #include #include int main() int i,j,sum,min,c,count,n,a,b; char s150,s250; scanf(%d,&n); for(i=0;in;i+) count=sum=0; scanf(%s,s2); for(j=0;jc|(count=c&summin) min=sum; c=count; strcpy(s1,s2); printf(%s %d %dn,s1,c,min); return 0;22 Specialized Numbers#include #include int main() int i,n,sum10,sum12,sum16; for(i=2992;i3000;i+) n=i; sum10=0; while(n) sum10+=n%10; n/=10; n=i; sum12=0; while(n) sum12+=n%12; n/=12; n=i; sum16=0; while(n) sum16+=n%16; n/=16; if(sum10=sum12&sum12=sum16) printf(%dn,i); return 0;23 Sticks#include #include #include int len64, n, minlen, get;bool b64;int cmp(const void *a, const void *b) return *(int *)a = n) return false; if(get = nowget) return true; int i; bool f = false; if(nowlen = 0) f = true; for(i = cnt; i n; i+) if(!bi) if(leni + nowlen = minlen) bi = true; if(dfs(0, nowget+1, nowget) return true; bi = false; return false; else if(leni + nowlen minlen) bi = true; if(dfs(nowlen+leni, nowget, i+1) return true; bi = false; if(f) return false; while(i + 1 n & leni = leni+1) i+; return false;int main() int i, tollen; while(scanf(%d, &n), n) tollen = 0; int j = 0, p; for(i = 0; i n; i+) scanf(%d, &p); if(p = 50) lenj = p; tollen += lenj; j+; n = j; if(n = 0) printf(0n); continue; qsort(len, n, sizeof(int), cmp); for(minlen = len0; ; minlen+) if(tollen % minlen) continue; memset(b, 0, sizeof(b); get = tollen / minlen; if(dfs(0, 0, 0) printf(%dn, minlen); break; return 0;24 Sum of Consecutive#include #include #include int len64,n,minlen,get;int b64;int cmp(const void *a,const void *b) return *(int *)a=n) return 0; if(get=nowget)
收藏
- 资源描述:
-
-/
西北工业大学POJ答案
绝对是史上最全版(不止100题哦……按首字母排序)
1. “1“的传奇
2. A+B
3. A+BⅡ
4. AB
5. ACKERMAN
6. Arithmetic Progressions
7. Bee
8. Checksum algorithm
9. Coin Test
10. Dexter need help
11. Double
12. Easy problem
13. Favorite number
14. Graveyard
15. Hailstone
16. Hanoi Ⅱ
17. Houseboat
18. Music Composer
19. Redistribute wealth
20. Road trip
21. Scoring
22. Specialized Numbers
23. Sticks
24. Sum of Consecutive
25. Symmetric Sort
26. The Clock
27. The Ratio of gainers to losers
28. VOL大学乒乓球比赛
29. 毕业设计论文打印
30. 边沿与内芯的差
31. 不会吧,又是A+B
32. 不屈的小蜗
33. 操场训练
34. 插入链表节点
35. 插入排序
36. 插入字符
37. 成绩表计算
38. 成绩转换
39. 出租车费
40. 除法
41. 创建与遍历职工链表
42. 大数乘法
43. 大数除法
44. 大数加法
45. 单词频次
46. 迭代求根
47. 多项式的猜想
48. 二分查找
49. 二分求根
50. 发工资的日子
51. 方差
52. 分离单词
53. 分数拆分
54. 分数化小数
55. 分数加减法
56. 复数
57. 高低交换
58. 公园喷水器
59. 韩信点兵
60. 行程编码压缩算法
61. 合并字符串
62. 猴子分桃
63. 火车站
64. 获取指定二进制位
65. 积分计算
66. 级数和
67. 计算A+B
68. 计算PI
69. 计算π
70. 计算成绩
71. 计算完全数
72. 检测位图长宽
73. 检查图像文件格式
74. 奖金发放
75. 阶乘合计
76. 解不等式
77. 精确幂乘
78. 恐怖水母
79. 快速排序
80. 粒子裂变
81. 链表动态增长或缩短
82. 链表节点删除
83. 两个整数之间所有的素数
84. 路痴
85. 冒泡排序
86. 你会存钱吗
87. 逆序整数
88. 排列
89. 排列分析
90. 平均值函数
91. 奇特的分数数列
92. 求建筑高度
93. 区间内素数
94. 三点顺序
95. 山迪的麻烦
96. 删除字符
97. 是该年的第几天
98. 是该年的第几天?
99. 数据加密
100. 搜索字符
101. 所有素数
102. 探索合数世纪
103. 特殊要求的字符串
104. 特殊整数
105. 完全数
106. 王的对抗
107. 危险的组合
108. 文件比较
109. 文章统计
110. 五猴分桃
111. 小型数据库
112. 幸运儿
113. 幸运数字”7“
114. 选择排序
115. 寻找规律
116. 循环移位
117. 延伸的卡片
118. 羊羊聚会
119. 一维数组”赋值“
120. 一维数组”加法“
121. 勇闯天涯
122. 右上角
123. 右下角
124. 圆及圆球等的相关计算
125. 圆及圆球等相关计算
126. 程序员添加行号
127. 找出数字
128. 找幸运数
129. 找最大数
130. 整数位数
131. 重组字符串
132. 子序列的和
133. 子字符串替换
134. 自然数立方的乐趣
135. 字符串比较
136. 字符串复制
137. 字符串加密编码
138. 字符串逆序
139. 字符串排序
140. 字符串替换
141. 字符串左中右
142. 组合数
143. 最次方数
144. 最大乘积
145. 最大整数
146. 最小整数
147. 最长回文子串
148. 左上角
149. 左下角
1. “1“的传奇
#include
#include
#include
int main()
{
int n,i,j,k=0,x=1,y,z,m,p,q,a,s=0;
scanf("%d",&n);
m=n;
for(i=1;i<12;i++)
{
m=m/10;
k++;
if(m==0)
break;
}
q=n;
k=k-1;
for(a=1;a<=k;a++)
{
x=x*10;
}
y=q%x;
z=q/x;
p=q-y;
if(z>=2)
s=s+x+z*k*(x/10);
else
s=s+z*k*(x/10);
for(j=p;j<=n;j++)
{
m=j;
for(i=1;i<12;i++)
{
x=m%10;
if(x==1)
s++;
m=m/10;
if(m==0)
break;
}
}
printf("%d",s);
return 0;
}
2. A+B
#include
int doubi(int n,int m)
{
n=n+m;
n=n%100;
return n;
}
int main()
{
int t,i,a[100],n,m;
scanf("%d",&t);
for (i=0;i<=(t-1);i++){
scanf("%d%d",&n,&m);
a[i]=doubi(n,m);
}
for (i=0;i<=(t-1);i++)
printf("%d\n",a[i]);
return 0;
}
3. A+BⅡ
#include
int main()
{
int A,B,sum;
scanf("%d%d",&A,&B);
sum=A+B;
printf("%d\n",sum);
return 0;
}
4. AB
#include
#include
#include
int main()
{
char s[100],q[100];
double a,b,c;
int n=0,i;
scanf("%lf%lf",&a,&b);
c=a*b;
sprintf(s,"%.0lf",c);
for(i=0;i=10){
sprintf(q,"%d",n);
n=0;
for(i=0;i
#include
#include
int ack(int x,int y)
{
int n;
if (x==0) {n=y+1;
return n;}
else if (y==0) n=ack(x-1,1);
else n=ack(x-1,ack(x,y-1));
return n;
}
int main()
{
int m,b;
scanf("%d%d",&m,&b);
m=ack(m,b);
printf("%d",m);
return 0;
}
6. Arithmetic Progressions
#include
#include
#include
int g(int n)
{
int i;
if(n==1) return 0;
if(n==2) return 1;
if(n==3) return 1;
for(i=2;i<=sqrt(n);i++) if(n%i==0) return 0;
return 1;
}
int f(int a,int b,int c)
{
int i=0,s=a-b;
if(c==1&&g(a)==1) return a;
if(b==0&&g(a)!=1) return -1;
while(1){
s=s+b;
if(g(s)) i++;
if(i>=c) break;
}
return s;
}
int main()
{
int a,b,c,d[100],i=0,n;
while(1){
scanf("%d%d%d",&a,&b,&c);
if(a==0&&b==0&&c==0) break;
d[i]=f(a,b,c);
i++;
}
n=i;
for(i=0;i
#include
int main()
{
int A[100],i=0,j,k,female=0,male=1,x;
for(;;i++)
{
scanf("%d",&A[i]);
if(A[i]==-1)
break;
}
for(j=0;j
#include
#include
int main()
{
int i,n,t,j;
char s[100][100];
for(i=0;;i++){
gets(s[i]);
if(s[i][0]==#) break;
}
n=i;
for(i=0;i
#include
int main()
{
char A[100000];
int n,i=0,a=0,b=0,j;
double x;
while(1)
{
scanf("%c",&A[i]);
if(A[i]==\n)
break;
i++;
}
for(j=0;j0.003||x-0.5<-0.003)
printf("Fail");
else
printf("%d/%d",a,a+b);
OH:return 0;
}
10. Dexter need help
#include
int fun(int a)
{
if(a==1) return 1;
else
return fun(a/2)+1;
}
int main()
{
int a,b[100],i=0,j;
while(1)
{
scanf("%d",&a);
if(a==0)break;
b[i]=fun(a);
i++;
}
for(j=0;j
#include
#include
int main()
{
int a[100],b[100],i,j,n,t=0;
for(i=0;;i++){
scanf("%d",&a[i]);
if(a[i]==0) break;
}
n=i;
for(i=0;i
#include
#include
int main()
{
int N,i,n,j=0;
scanf("%d",&N);
for(i=2;i
#include
#define MAXNUM 100000
int prime_number = 0;
int prime_list[MAXNUM];
bool is_prime[MAXNUM];
int ans[MAXNUM + 2];
int dp[MAXNUM + 2];
void set_prime() {
int i, j;
memset(is_prime, 0, sizeof(is_prime));
for (i = 2; i < MAXNUM; i++) {
if (is_prime[i] == 0) {
prime_list[prime_number++] = i;
if (i >= MAXNUM / i) continue;
for (j = i * i; j < MAXNUM; j+=i) {
is_prime[j] = 1;
}
}
}
}
int main() {
int i, j, k,o=0,d[100];
memset(dp, -1, sizeof(dp));
set_prime();
ans[0] = 0;
dp[1] = 0;
for (i = 1; i <= MAXNUM; i++) {
ans[i] = ans[i - 1] + dp[i];
if (dp[i + 1] == -1 || dp[i + 1] > dp[i] + 1) {
dp[i + 1] = dp[i] + 1;
}
for (j = 0; j < prime_number; j++) {
if (i > MAXNUM / prime_list[j]) break;
k = i * prime_list[j];
if (dp[k] == -1 || dp[k] > dp[i] + 1) {
dp[k] = dp[i] + 1;
}
}
}
while (scanf("%d%d", &i, &j) == 2 && (i || j)) {
d[o]=ans[j] - ans[i - 1];
o++;
}
for(i=0;i
#include
#include
int main()
{
int a[100],b[100],n,i,j;
double s,p,l,t;
for(i=0;;i++){
scanf("%d%d",&a[i],&b[i]);
if(a[i]==0&&b[i]==0) break;
}
n=i;
for(i=0;i
#include
#include
int f(int n)
{
int s=1;
while(1){
if(n==1) return s;
else if(n%2==0) n=n/2,s++;
else n=3*n+1,s++;
}
}
int main()
{
int n,m,i,j=0,t;
scanf("%d%d",&m,&n);
printf("%d %d",m,n);
if(m>n) t=m,m=n,n=t;
for(i=m;i<=n;i++)
if(f(i)>j) j=f(i);
printf(" %d",j);
return 0;
}
16. Hanoi Ⅱ
#include
#include
#define M 70
int start[M], targe[M];
long long f(int *p, int k, int fina)
{
if(k==0) return 0;
if(p[k]==fina) return f(p,k-1,fina);
return f(p,k-1,6-fina-p[k])+(1LL<<(k-1));
}
int main ()
{
long long ans;
int n;
while(scanf("%d",&n),n)
{
int i;
for(i=1;i<=n;i++) scanf("%d",&start[i]);
for(i=1;i<=n;i++) scanf("%d",&targe[i]);
int c=n;
for(;c>=1&&start[c]==targe[c];c--);
if(c==0)
{
printf("0\n"); continue;
}
int other=6-start[c]-targe[c];
ans=f(start,c-1,other)+f(targe,c-1,other)+1;
printf("%lld\n",ans);
}
return 0;
}
17. Houseboat
#include
#include
#include
#define pi 3.1415926
int f(float x,float y)
{
int i;
for(i=0;;i++)
if(50*i>sqrt(x*x+y*y)*sqrt(x*x+y*y)*pi/2) break;
return i;
}
int main()
{
int n,i,a[100];
float x,y;
scanf("%d",&n);
for(i=0;i
#include
#include
int main()
{
int a[1000],b[1000],n,i,j,s,sum,t,m,mid,c[100],k=0;
while(1){
scanf("%d",&n);
if(n==0) break;
{
s=0;
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
s=s+a[i];}
m=s/n;
b[1]=a[1]-m;
b[0]=0;
for(i=2;ib[j+1]) t=b[j],b[j]=b[j+1],b[j+1]=t;
mid=b[n/2];
sum=0;
for(i=0;i<=n-1;++i) sum=sum+fabs(mid-b[i]);
c[k]=sum;k++;
}}
for(i=0;i
#include
#include
int f(int n)
{
int a[100],b[100],i,s;
for(i=0;i
#include
#include
int main()
{
int i,j,sum,min,c,count,n,a,b;
char s1[50],s2[50];
scanf("%d",&n);
for(i=0;ic||(count==c&&sum
#include
int main()
{
int i,n,sum10,sum12,sum16;
for(i=2992;i<3000;i++){
n=i;
sum10=0;
while(n){
sum10+=n%10;
n/=10;
}
n=i;
sum12=0;
while(n){
sum12+=n%12;
n/=12;
}
n=i;
sum16=0;
while(n){
sum16+=n%16;
n/=16;
}
if(sum10==sum12&&sum12==sum16) printf("%d\n",i);
}
return 0;
}
23. Sticks
#include
#include
#include
int len[64], n, minlen, get;
bool b[64];
int cmp(const void *a, const void *b)
{
return *(int *)a < *(int *)b ? 1 : -1;
}
bool dfs(int nowlen, int nowget, int cnt)
{
if(cnt >= n) return false;
if(get == nowget) return true;
int i;
bool f = false;
if(nowlen == 0) f = true;
for(i = cnt; i < n; i++)
{
if(!b[i])
{
if(len[i] + nowlen == minlen)
{
b[i] = true;
if(dfs(0, nowget+1, nowget))
return true;
b[i] = false;
return false;
}
else if(len[i] + nowlen < minlen)
{
b[i] = true;
if(dfs(nowlen+len[i], nowget, i+1))
return true;
b[i] = false;
if(f) return false;
while(i + 1 < n && len[i] == len[i+1]) i++;
}
}
}
return false;
}
int main()
{
int i, tollen;
while(scanf("%d", &n), n)
{
tollen = 0;
int j = 0, p;
for(i = 0; i < n; i++)
{
scanf("%d", &p);
if(p <= 50)
{
len[j] = p;
tollen += len[j];
j++;
}
}
n = j;
if(n == 0)
{
printf("0\n");
continue;
}
qsort(len, n, sizeof(int), cmp);
for(minlen = len[0]; ; minlen++)
{
if(tollen % minlen) continue;
memset(b, 0, sizeof(b));
get = tollen / minlen;
if(dfs(0, 0, 0))
{
printf("%d\n", minlen);
break;
}
}
}
return 0;
}
24. Sum of Consecutive
#include
#include
#include
int len[64],n,minlen,get;
int b[64];
int cmp(const void *a,const void *b)
{
return *(int *)a<*(int *)b?1:-1;
}
int dfs(int nowlen,int nowget,int cnt)
{
if(cnt>=n) return 0;
if(get==nowget)
展开阅读全文