NOIP(第14届)--2008--普及组--复赛--试题与答案(NA14)

2022-07-07 已有0人阅读 作者: IT航班

中小学编程红宝书.zip


关键词:

北京中关村;海淀黄庄;北京大学;清华大学。少儿编程;中小学编程;信息学竞赛;计算机竞赛;NOIP;NOIP竞赛;CSP-J/S竞赛;NOI竞赛。北京中学;东坝。

      2008年、普及组、复赛,第14届。

面向6-18岁中小学生,做最专业的中小学编程教育。


解析与答案:


1题:ISBN号码

1、说明

A、试题类型:

       基本问题延申。

 

B、算法模型:

       无。

 

C、试题说明:

       无。

 

 

 

2、代码

#include<iostream>

using namespace std;

 

int cheng(int a,int n)

{

       return a*n;

}

 

int main()

{

       string date;

       cin>>date;

       int ans=0,jie=1;

       for(int i=0;i<date.size()-1;i++)

       {

              if(date[i]!='-')

              {

                     int rem=date[i]-48;

                     ans+=cheng(rem,jie++);

              }

       }

 

       if(ans%11==date[date.size()-1]-48  

        ||  ans%11==10&&date[date.size()-1]=='X')

        //数字ASCII码与数字间差48

       {

              cout<<"Right";

       }

       else if(ans%11==10)

       {

              for(int i=0;i<date.size()-1;i++)

              {

                     cout<<date[i];

              }

              cout<<'X';

       }

       else

       {

              for(int i=0;i<date.size()-1;i++)

              {

                     cout<<date[i];

              }

              cout<<ans%11;

       }

 

       return 0;

}

    

 

 

 

 

2题:排座椅

1、说明

A、试题类型:

       最优方案。

 

B、算法模型:

       贪心题。

 

C、试题说明:

记录一下每两行(列)之间有多少对同学会交头接耳,然后sort排序,找到最多的几个,然后,再一遍sort,从小到大排,最后输出。

 

 

2、代码

#include<cstdio>

#include<algorithm>

using namespace std;

 

int n,m,k,l,d;

int x1,y1,x2,y2;

 

struct zj

{

       int sum,num;

}x[1000],y[1000];

 

bool cmp1(const zj &x,const zj &y)

{

       return x.sum>y.sum;

}

 

bool cmp2(const zj &x,const zj &y)

{

       return x.num<y.num;

}

 

 

 

 

int main()

{

       scanf("%d%d%d%d%d",&m,&n,&k,&l,&d);

       for(int i=1;i<=d;i++)

       {

              scanf("%d%d%d%d",&x1,&y1,&x2,&y2);

              if(x1==x2)y[min(y1,y2)].num=min(y1,y2),y[min(y1,y2)].sum++;

              if(y1==y2)x[min(x1,x2)].num=min(x1,x2),x[min(x1,x2)].sum++;

       }

       sort(y+1,y+n+1,cmp1);

       sort(x+1,x+m+1,cmp1);

       sort(y+1,y+l+1,cmp2);

       sort(x+1,x+k+1,cmp2);

 

       for(int i=1;i<=k;i++)

              printf("%d ",x[i].num);

 

       printf("\n");

 

       for(int i=1;i<=l;i++)

              printf("%d ",y[i].num);

 

       return 0;

}

   

 

 

 

3题:传球游戏

1、说明

A、试题类型:

       数据结构加深。

 

B、算法模型:

       记忆化搜索。

 

C、试题说明:

       令dp[position][times]代表求在第position的位置上时人数还有多少。

 

 

2、代码

#include <stdio.h>

#include <iostream>

#include <memory.h>

using namespace std;

 

int dp[101][101],n,m,s;

 

int DFS(int position,int times)//position是球的位置,times是人数

{

       if(dp[position][times]!=-1) return dp[position][times];

       if(position>n) position=1;//环形特判

       if(position<1) position =n;

       if(times==0)//人被淘汰了

       {

              if(position==1)//如果最后一个球在手上

              {

                     return 1;

              }

              return 0;

       }

       return dp[position][times]=DFS(position-1,times-1)+DFS(position+1,times-1);//求方案总数

}

 

 

signed main()

{

       ios::sync_with_stdio(false);

       cin.tie(0);

       cout.tie(0);

       register int i,j;

       memset(dp,-1,sizeof(dp));//方案数可能为0种,如果方案数大多为0的话,记搜会退化,所以要赋值为-1

       cin>>n>>m;

       cout<<DFS(1,m)<<endl;

       return 0;

}

 

 

 

 

4题:立体图

1、说明

A、试题类型:

       几何问题。

 

B、算法模型:

       数学应用。

 

C、试题说明:

       无。

 

 

 

2、代码

#include<cstdio>

#include<algorithm>

#include<cstring>

using namespace std;

 

 

#define maxn1 100

#define maxn2 2000

 

 

int m,n,minx,maxx,miny,maxy;

int a[maxn1+20][maxn1+20];

char s[maxn2][maxn2];

 

void redirect()

{

       freopen("1.in","r",stdin);

       freopen("1.out","w",stdout);

}

 

void readdata()

{

       int i,j,k;

       scanf("%d%d",&m,&n);

       for(i=1;i<=m;i++)

              for(j=1;j<=n;j++)

                     scanf("%d",&a[i][j]);

             

              minx=1000-2*(m-1);

              maxx=1000+4*n+2;

              miny=1000-2*(m-1);

              maxy=0;

             

              for(i=minx;i<=maxx;i++)

                     for(j=miny;j<=1000+320;j++)

                            s[i][j]='.';      

}

 

void write()

{

       int i,j,k;

       for(j=maxy;j>=miny;j--)

       {

              for(i=minx;i<=maxx;i++)printf("%c",s[i][j]);

              printf("\n");

       }

}

 

void cover(int x,int y)

{

       maxy=max(maxy,y+5);

      

       s[x][y]=s[x+4][y]='+';

       s[x+1][y]=s[x+2][y]=s[x+3][y]='-';

      

       y++;

       s[x][y]=s[x+4][y]='|';

       s[x+1][y]=s[x+2][y]=s[x+3][y]=' ';

       s[x+5][y]='/';

      

       y++;

       s[x][y]=s[x+4][y]='|';

       s[x+1][y]=s[x+2][y]=s[x+3][y]=s[x+5][y]=' ';

       s[x+6][y]='+';

      

       y++;

       s[x][y]=s[x+4][y]='+';

       s[x+1][y]=s[x+2][y]=s[x+3][y]='-';

       s[x+5][y]=' ';

       s[x+6][y]='|';

      

       x++,y++;

       s[x][y]=s[x+4][y]='/';

       s[x+1][y]=s[x+2][y]=s[x+3][y]=' ';

       s[x+5][y]='|';

      

       x++,y++;

       s[x][y]=s[x+4][y]='+';

       s[x+1][y]=s[x+2][y]=s[x+3][y]='-';

}

 

void work()

{

       int i,j,k,x1,y1,x2,y2,x3,y3;

       x1=y1=1000;

       for(i=1;i<=m;i++)

    {

              x2=x1,y2=y1;

              for(j=1;j<=n;j++)

        {

                     x3=x2,y3=y2;

                     for(k=1;k<=a[i][j];k++)

                            cover(x3,y3),y3+=3;

                     x2+=4; 

        }

              x1-=2,y1-=2; 

    } 

       write(); 

}

 

int main()

{

       readdata();

       work();

       return 0;

}

 

 

 




IT航班提供:课程视频、、课程书籍、竞赛辅导、少儿编程指导、课程采购、加盟、少儿编程资料、少儿编程课程、保送生、特长生、加分、中小学计算机教育、中小学信息学、竞赛、中小学信息学课程、人工智能、中小学编程加盟、少儿编程加盟、品牌加盟、技术加盟、技术指导、课程加盟、师资培训、中小学编程教辅资料、中小学编程教师培训、少儿编程教学书籍、少儿编程视频、教学书籍、教师培训、教学视频、CSP-J/S、中小学信息学课程服务、竞赛指导、课程提供、国内外计算机中小学计算机竞赛、信息学竞赛、信息学课程提供商、信息学奥林匹克。

      

IT航班支持----中小学编程比赛汇总:

 

第一部分:国内比赛(IT航班支持)   

1、软件能力认证(CSP-JS) 

2、全国青少年信息学奥林匹克联赛(NOIP)    

3、全国青少年信息学奥林匹克竞赛(NOI)

4、中国青少年………………………  

5、………………………创新挑战赛  

6、全国青少年………………………  

7、………………………

8、 恩欧希教育信息化发明创新奖  

9、世界机器人大赛(WRC) 

10、………………………大赛    

11、少………………………智能教育成果展示大赛 

12、“明天小小科学家”奖励活动

13、………………………    

14、………………………    

15、国际信息学……………………… 

16、………………………    

 

第二部分:国际比赛(IT航班支持)   

17、………………………    

18、国际………………………    

19、………………………

20、美国信息学……………………… 

21、加拿大……………………… 

22、官方邀请赛 (CCO)     

23、国际计算思维………………………    

24、美国计算机……………………… 

25、澳大利亚………………………    

 

第三部分:企业比赛(IT航班支持)   

26、微软MTA    

27、………………………挑战赛 

28、………………………科学奖 

29、………………………学奖    

30、………………………创新挑战赛 

31、………………………挑战赛 

32、………………………芯计算机表演赛 

33、………………………大赛    

 

第四部分:Scratch相关竞赛(IT航班支持)    

34、全国中小学生电脑制作大赛     

35、………………………    

36、………………………    

37、………………………    

 

第五部分:其它(IT航班支持)   

38、NOI夏令营  

39、NOI冬令营(NOIWC)  

40、全国青少年……………………… 

41、国际青少年………………………

 

联系方式:

A、官方网址:

http://www.itflight.net


B、微信公众号:

添加微信,获取资料。

image.png

 



关注公众号,获取动态。

image.png