预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共18页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

更多企业学院:《中小企业管理全能版》183套讲座+89700份资料《总经理、高层管理》49套讲座+16388份资料《中层管理学院》46套讲座+6020份资料《国学智慧、易经》46套讲座《人力资源学院》56套讲座+27123份资料《各阶段员工培训学院》77套讲座+324份资料《员工管理企业学院》67套讲座+8720份资料《工厂生产管理学院》52套讲座+13920份资料《财务管理学院》53套讲座+17945份资料《销售经理学院》56套讲座+14350份资料《销售人员培训学院》72套讲座+4879份资料安徽省2011“达内杯”程序设计大赛解题报告A-幸运数字此题只需题目描述解即可没有任何算法和trick...#include<iostream>usingnamespacestd;intmain(){intn;while(scanf("%d"&n)!=EOF){intt=ns=0;while(t){s+=t%10;t/=10;}if(n%s==0)printf("yes\n");elseprintf("no\n");}return0;}B-转换二叉树首先根据先序序列和中序序列建立二叉树然后按要求先序遍历一遍二叉树即可。当然由于建树过程实际也是在先序遍历二叉树所以可以不用实际建树只是模拟那个过程然后再过程中输出即可。建树过程简单的说就是以先序序列定根节点以中序序列和和根节点定左右子树。#include<iostream>#include<string.h>usingnamespacestd;constintmaxn=27;intN;charPreOrder[maxn]InOrder[maxn];voidDFS(intPreStartintPreEndintInStartintInEnd){intpos;for(pos=InStart;PreOrder[PreStart]!=InOrder[pos];pos++){}if(pos!=InStart){printf("(");DFS(PreStart+1PreStart+pos-InStartInStartpos-1);printf(")");}printf("%c"PreOrder[PreStart]);if(pos!=InEnd){printf("(");DFS(PreStart+pos-InStart+1PreEndpos+1InEnd);printf(")");}}intmain(){intilen;scanf("%d"&N);getchar();for(i=0;i<N;i++){scanf("%s%s"PreOrderInOrder);len=strlen(PreOrder);DFS(0len-10len-1);printf("\n");}return0;}C-取石子首先给出必胜结论只要n!=2^x则先手必胜。证明:假设n=12将它转换为二进制则为'1100'。先手第一次取只需把二进制中从低位数起第一个'1'取走即可。在这个例子中先手留给后手石子数的二进制为'1000'。这样后手能取的石子数的二进制范围为'0001'-'0100'无论后手怎么取它都不可能把所有数字都取完而且取了之后剩下的石子数的二进制后3位肯定有一个'1'。先手只需再次将从低位数起的第一个'1'取走即可重复上述过程直至游戏结束。而如果先手第一次面对的石子数是2^x个由于他第一次不能把石子都取完所以他无论如何取都会把上述必胜状态留给对手。同样根据上述证明方法可以证明如果先手必胜那么他第一次取的最少石子数就是石子数的二进制中从低位数起的第一个'1'。#include<iostream>usingnamespacestd;intmain(){intnt;while(scanf("%d"&n)!=EOF){t=1;while(!(n&