Posted on 2011-08-26 17:00
Uriel 阅读(189)
评论(0) 编辑 收藏 引用 所属分类:
考研&保研复试上机题
这套也都是大水。。
1. 有多少不同的面值组合?
//2002年清华大学计算机研究生机试题(第I套) 有多少不同的面值组合?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int flg[300];


int main()
{
int i, j, k, tmp;
memset(flg, 0, sizeof(flg));

for(i = 0; i <= 5; ++i)
{

for(j = 0; j <= 4; ++j)
{

for(k = 0; k <= 6; ++k)
{
tmp = 8 * i + 10 * j + 18 * k;
if(tmp != 0 && !flg[tmp]) flg[tmp] = 1;
}
}
}
int cnt = 0;
for(i = 1; i <= 8 * 5 + 10 * 4 + 18 * 6; ++i)
if(flg[i]) cnt++;
printf("%d\n", cnt);
return 0;
}2. 杨辉三角形
递归函数还是很弱。。异常丑陋。。
//2002年清华大学计算机研究生机试题(第I套) 杨辉三角形

#include<stdio.h>
#include<stdlib.h>

int ans[100][100];


void cal(int n)
{
if(n == 1) return;
cal(n - 1);
ans[n - 1][0] = 1;
printf("1");

for(int i = 1; i < n; ++i)
{
ans[n - 1][i] = ans[n - 2][i - 1] + ans[n - 2][i];
printf(" %d", ans[n - 1][i]);
}
ans[n - 1][n] = 1;
puts(" 1");
}


int main()
{
int n, i, j;

while(~scanf("%d", &n))
{
ans[0][0] = ans[0][1] = 1;
puts("1 1");
cal(n - 1);
}
return 0;
}3. 对称平方数
//2002年清华大学计算机研究生机试题(第II套) 有对称平方数

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


int main()
{
int i, j, tp, k, p[9];

for(i = 1; i < 256; ++i)
{
tp = i * i;
k = 0;

while(tp > 0)
{
p[k++] = tp % 10;
tp /= 10;
}

for(j = 0; j < k / 2; ++j)
{
if(p[j] != p[k - 1 - j]) break;
}
if(j == k / 2) printf("%d\n", i);
}
return 0;
}2011.09.11 PS:这题Rejudge了... 0也要输出...
4. 斐波那契数列
丑陋的代码。。
//2002年清华大学计算机研究生机试题(第II套) 斐波那契数列

#include<stdio.h>
#include<stdlib.h>


void cal(int n, int p1, int p2)
{
printf(" %d", p1 + p2);
if(!n) return;
cal(n - 1, p2, p1 + p2);
}


int main()
{
int n, i;

while(~scanf("%d", &n))
{
puts("0");

for(i = 1; i < n; ++i)
{
printf("0 1");
cal(2 * (i - 1), 0, 1);
puts("");
}
}
return 0;
}