NOIP(第02届)--1996--普及组--复赛--试题与答案(NA02)

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

中小学编程红宝书.zip


关键词:

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

      1996年、普及组、复赛,第2届。

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


解析与答案:

1题:乘法运算

1、说明

A、试题类型:

       数字运算。

 

B、算法模型:

       分段输出。

 

C、试题说明:

       无。

 

2、代码

#include < iostream >

using   namespace  std;

 

void  MIDDLE( int  m, int  n, int  lm, int  ln)

{

       int a[3],i;

       int k1,k2,k3;

       int l1=2,l2=2,l3=2;

       a[0]=n%10;a[1]=n/10;

       if(ln==3)

       {

              a[2]=n/10%10;

              a[1]=n/100;

       }

      

       k1=a[0]*m;

       if(k1<10)    l1=1;

       else

              if(k1>=100)    l1=3;

              else

                     if(k1>=1000)    l1=4;

                    

                     k2=a[1]*m;

                     if(k2<10)    l2=1;

                     else

                            if(k2>=100)    l2=3;

                            else

                                   if(k2>=1000)    l2=4;

                                  

                                   k3=a[2]*m;

                                   if(k3<10)    l3=1;

                                   else

                                          if(k3>=100)    l3=3;

                                          else

                                                 if(k3>=1000)    l3=4;

                                                

                                                 for(i=7-l1;i>0;i--)

                                                        cout<<" ";

                                                 cout<<k1<<endl;

                                                

                                                 if(ln==3)

                                                 {

                                                        for(i=7-l3;i>1;i--)

                                                               cout<<" ";

                                                        cout<<k3<<endl;

                                                       

                                                        for(i=7-l2;i>2;i--)

                                                               cout<<" ";

                                                        cout<<k2<<endl;

                                                 }

                                                 else

                                                 {

                                                        for(i=7-l2;i>1;i--)

                                                               cout<<" ";

                                                        cout<<k2<<endl;

                                                 }

                                                

                                                 cout<<"-------"<<endl;

}

 

int  main()

{

       int m,n,s;

       int lengthM=2,lengthN=2,lengthS=4;

       int i;

       while(scanf("%d%d",&m,&n)!=EOF)

       {

              s=m*n;

              lengthM=2;lengthN=2;lengthS=4;

             

              if(m<10)    lengthM=1;

              if(m>=100)    lengthM=3;

              if(n<10)    lengthN=1;

              if(n>=100)    lengthN=3;

              if(s<10)    lengthS=1;

              else

                     if(s<100)    lengthS=2;

                     else

                            if(s<1000)    lengthS=3;

                            else    if(s>=10000)    lengthS=5;

                           

                            for(i=7-lengthM;i>0;i--)

                                   cout<<" ";

                            cout<<m<<endl;

                           

                            cout<<"*";

                            for(i=7-lengthN;i>1;i--)

                                   cout<<" ";

                            cout<<n<<endl;

                           

                            cout<<"-------"<<endl;

                           

                            if(lengthN!=1)

                                   MIDDLE(m,n,lengthM,lengthN);

                           

                            for(i=7-lengthS;i>0;i--)

                                   cout<<" ";

                            cout<<s<<endl;

       }

      

       return 0;

}

2题:格子问题

1、说明

A、试题类型:

       基本逻辑问题。

 

B、算法模型:

       坐标系上规律查找。

 

C、试题说明:

       无。

 

2、代码

#include<iostream>

using namespace std;

 

int main()

{

       int n,x,y;

       cin>>n>>x>>y;

       for (int i=1; i<=n; i++) cout<<"("<<x<<","<<i<<")";

       cout<<endl;

       for (int i=1; i<=n; i++) cout<<"("<<i<<","<<y<<")";

       cout<<endl;

       int i=x,j=y;

       while (i>1 && j>1) i--,j--;

       while (i<=n && j<=n) cout<<"("<<i++<<","<<j++<<")";

       cout<<endl;

       i=x,j=y;

       while (i<n && j>1) i++,j--;

       while (i>=1 && j<=n) cout<<"("<<i--<<","<<j++<<")";

       cout<<endl;

       return 0;

}

 

 

3题:字符串编辑

1、说明

A、试题类型:

       字符串问题。

 

B、算法模型:

       相对简单,stl应用。

 

C、试题说明:

       无。

      

 

2、代码

#include <iostream>

#include <algorithm>

#include <string>

using namespace std;

string str;

char edit;

char a1, a2;

int main()

{

       getline(cin, str);

       cin >> edit;

       str = str.substr(0, str.find_first_of(".") + 1);

       string tempstr = str;

       switch (edit)

       {

              case 'D':cin >> a1; str = str.erase(str.find_first_of(a1), 1); break;

              case 'I':cin >> a1 >> a2; str = str.insert(str.find_last_of(a1), 1, a2); break;

              case 'R':cin >> a1 >> a2; replace(str.begin(), str.end(), a1, a2); break;

              default:

                     break;

       }

       if (str == tempstr)

              cout << "no exist";

       else cout << str;

       return 0;

}

    

 

4题:比赛安排

2、说明

A、试题类型:

       算法训练题。

 

B、算法模型:

       DFS。

 

C、试题说明:

       无。

 

3、代码

#include<iostream>

#include<cstring>

#include<cmath>

using namespace std;

int n,m,book[100],map[100][100];

void DFS()

{

       int k=0;

       memset(book,0,sizeof(book));

       while (1)

       {

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

              {

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

                     {

                            if (map[i][j]==0&&book[i]==0&&book[j]==0)

                            {

                                   k++;

                                   book[i]=1;

                                   book[j]=1;

                                   map[i][j]=1;

                                   cout<<i<<"-"<<j<<" ";

                            }

                            if (k==n/2)

                    return ;

                     }

              }

       }

}

int main()

{

       cin>>n;

       n=pow(2,n);

       m=n-1;

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

       {

              cout<<"<"<<i<<">";

              DFS();

              if (i!=m)

                     cout<<endl;

       }

}

 

 

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