2014年大学生程序设计竞赛试卷与参考解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014年大学生程序设计竞赛试卷与参考解答
(注意:当某道试题设计完成并调试通过确认后,请举手当着监考人员的面运行程序,并把运行结果填入该题的数据测试后空白处。)
1.旅馆里有10000间房间,从1到10000编了号。第一位服务员把所有的房间门都打开了,第二位服务员把所有编号是2的倍数的房间进行“相反处理”,第三位服务员把所有编号是3的倍数的房间作“相反处理”,……,第n(1<=n<=10000)位服务员把所有编号是n的倍数的房间作“相反处理”。问第n个服务员来过后,问共有多少张门是打开的(C)。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。)
给出以下参数的结果:
n=1179, C= 5261
n=9291, C= 801
n=5127, C= 4915
#include
using namespace std;
int main()
{
int i,j,n; //i为服务员编号,j为房间编号
int a[10001];
cin>>n;
for(int t=1;t<10001;t++)
a[t]=1;
for(i=2;i<=n;i++)
for(j=i;j<10001;j++)
if(j%i==0) a[j]*=-1;
cout<<"打开的房间数为:";
j=0;
for(i=1;i<10001;i++)
if(a[i]==1)
j++;
cout< return 0; } 2、有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有1<=n<1012) 个空汽水瓶,最多可以换多少瓶(max)汽水喝? n=190, max = 95 n=7777, max = 3888 n=99995555, max = 49997777 n=9383736353, max= 4691868176 3、定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位 数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。 例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数, 因为20-5=15不是17的倍数。输入一个正整数n (1<=n <=10100),你的任务是判 断它是否是17的倍数。如果n 是17的倍数则输出1,否则输出0。 n=201, out = 0 n=999888777888540, out = 1 n=12345678987654325, out = 0 n=171717171717171717171717171717171717171717171717171616, out = 0 (25个17,2个16) #include #include int main() { char s[200]; while(scanf("%s", &s) == 1) { if(!strcmp(s, "0")) break; int m = 0; for(int i = 0; i < strlen(s); i++) m = (m*10+s[i]-'0')%17; printf("%d\n", m==0?1:0); } return 0; 4、设n 为正整数,解不等式(分子改) b n n a <±+-+++++-+-+++++-+++-++12/11/12/114/13/12/114/13/12/113/12/113/12/112/112/111 (分母中各项符号“+”、“-”相间),输入正整数a,b(1 解:上下限一般为键盘输入的a,b 。