先说下今天的感受:
1. 题目做多了,人会变傻啊!
2. 迷乱的时候,模拟步骤来(农大1323)
3. 出错时千万别呆看,调试下现原形(农大1338)
1. 农大1338
题目链接:点击我打开题目哈
就是因为定义数组的时候太小家子气了,结果数组越界。c语言的数组越界不会像java一样会提示,最后浪费了自己一个早上在那边琢磨。到最后怀疑到全局变量的数组默认初始化是否为零的问题上,真的是无语啊!
在定义p数组的时候也考虑过越界问题,不够自己打印 p[j] 出来发现没有问题,最后还是W君打印 j 的值才明白,真的很佩服 W 君的能力。这次也发现了自己的问题所在,就是遇到出错的时候没想到直接去调试,而是呆在那边乱想。不调试而想找出 bug 真的是痴心妄想。不用调试找 bug 真的是“旷安宅而弗居,舍正路而不由,呜呼哀哉”。
#include<iostream>
#include<cmath>
using namespace std;
int p[1250];
int main()
{
int m;
int cou[10001]={0};
int i, j, n, flag;
n = 3;
p[0] = 2;
j = 0;
while(n <= 10000){
flag = 1;
for(i=2; i<=sqrt(n); i++){
if(n % i == 0){
flag = 0;
break;
}
}
if(flag){
//cout << p[j] << " ";
p[++j] = n;
}
n += 2;
}
int f, s, x;
for(i=0; i<1250; i++){
for(j=i; j<1250; j++){
s = 0;
f = 0;
for(x=i; x<=j; x++){
s += p[x];
if(s >= 10000){
s -= p[x];
f = 1;
break;
}
}
if(f == 0){
//cout << s << " ";
cou[s]++;
}
}
}
while(cin >> m)
{
if(m == 0)
break;
cout << cou[m] << endl;
}
return 0;
}
2.农大1323
题目链接:点击我打开题目
题目本身不难,初中高中就接触过了,但是做这种题目竟然会慌张,说多了都是泪啊!这题算是十足的水题了,但是还是学到不少的东西。这题目做完给我的感受是:当迷乱的时候,模拟步骤来。题目做多了人真的会变傻啊,数学思维才是最重要的。数学是自然科学,计算机是人造科学。
#include<iostream>
using namespace std;
int main()
{
long m, k, n, t;
while(cin >> m >> k)
{
t = m;
if(m==0 && k==0)
break;
while(m >= k){
n = m / k;
m = m - n * k + n;
t += n;
}
cout << t << endl;
}
return 0;
}
3.博弈
该说下今天所讲的博弈论了~~~今天讲的人没效率,听的人也没精神。弄好网址自己再好好琢磨吧。
介绍博弈论比较详细,比较好的论文的链接:
http://www.wutianqi.com/?p=1081
http://www.cnitblog.com/weiweibbs/articles/42735.html
http://qing.blog.sina.com.cn/tj/7ebd053433000viz.html