第1题 打印方阵

第1题      打印方阵     时限:1s 空间:256m

下面这样的方阵很有规律,称为蛇形方阵。例如3*3的:

1 2 3

6 5 4

7 8 9

现在给定边长,输出相应的蛇形方阵。

输入格式

输入文件名:633.in

1个整数n,表示要输出n*n的蛇形方阵,1<=n <=100

输出格式

输出文件名:633.out

n行,每行n个整数,空格隔开。

输入/输出例子1

输入:

4

输出:

1  2  3  4

8  7  6  5

9 10 11 12

16 15 14 13

提示:输出数无需上面样例输出那样整齐。

样例解释

样例解释

作答区域

#include<iostream>
#include<fstream>
#include<algorithm>
#include<cmath>
using namespace std;
int n;
int main()
{  
     cin>>n;
     for(int i=1;i<=n;i++)
     {
   
         if(i%2==1)
         {
             for(int j=(i-1)*n+1;j<=i*n;j++)
             cout<<j<<" ";
             cout<<endl;
         }
         if(i%2==0)
         {
             for(int j=i*n;j>=(i-1)*n+1;j--)
             cout<<j<<" ";
             cout<<endl;
         }
     }
    return 0;
}

 

第2题      分数减法      时限:1s 空间:256m

 

blob.png

  这样的分式运算我们都会。请编程计算两个分数相减的结果。

输入格式

输入文件名:634.in

第一行2个整数ab,表示一个分数

blob.png

 1<=a<b <=10000

第二行2个整数cd,表示一个分数 

blob.png

 ,1<=a<b <=10000

 

输入数据保证计算结果为正。

输出格式

输出文件名:634.out

 

2个整数,表示结果。

提示:运算结果分式要约分。

输入/输出例子1

输入:

4 7

1 3

输出:

5 21

样例解释

样例解释

作答区域

#include<bits/stdc++.h>
using namespace std;
long long o,b,c,d,t,y;
int main(){
    cin>>o>>b>>c>>d;
    y=o*d-c*b,t=b*d;
    if(y==0)cout<<"0";
    else
    {
       for(int i=10000;i!=0;i--)
       {    
           if(y%i==0&&t%i==0){y/=i,t/=i;break;}
           if(t%y==0){t/=y,y=1;break;}
       }
       cout<<y<<" "<<t;
    }
    return 0;
}

第4题      集合的差      时限:1s 空间:256m

  有两个数列AB,那些在A中出现但不在B中出现的数就称为集合A和集合B的差:A-B。例如:A={1 ,4, 5, 2, 6} ,B={ 5,3,2,7} , 那么A-B = {1,4,6}

  现在给你2个集合AB,求A-B有多少个数。

输入格式

输入文件名:636.in

 

第一行2个整数nanb,表示集合A和集合B各有多少个整数,1<=na,nb<=10000

第二行na个不同的正整数,表示集合A里的数,每个正整数不超过10000

第二行nb个不同的正整数,表示集合B里的数,每个正整数不超过10000

输出格式

输出文件名:636.out

一个整数,A-B里有多少数。

输入/输出例子1

输入:

5 4

5 2 4 8 7

3 7 6 2

输出:

3

 

样例解释

A-B={5,4,8 }

#include<stdio.h>
using namespace std;
int a[10005];
int b[10005];
int main()
{
    int x,y,i,j,c=0;
    scanf("%d %d",&x,&y);
    for(i=0;i<=x-1;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<=y-1;i++)
    {
        scanf("%d",&b[i]);
    }
    for(i=0;i<=x-1;i++)
    {
        for(j=0;j<=y-1;j++)
        {
            if(a[i]==b[j])c++;
        }
    }
    printf("%d",x-c);
    return 0;
}

 

第5题      可表示的数     时限:1s 空间:256m

  N个整数从左到右排成一行,如果某个数等于它前面的2个数的和,就称这个数是可以表示的数。问给定的数列里有多少个数是可以表示的数。

输入格式

输入文件名:637.in

 

第一行1个整数N,表示数列有多少个整数。1<=N<=10000

第二行N个正整数,每个正整数不超过10000

输出格式

输出文件名:637.out

 

一个整数,有多少可表示的数。

输入/输出例子1

输入:

8

5 2 2 3 4 8 7 16

输出:

3

 

样例解释

4=2+28=5+3 7=3+4

样例解释

样例解释

作答区域

#include<iostream>
using namespace std;
int n,ans;
int a[10005],v[20005];
int main()
{
    cin >> n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        if(v[a[i]]==1)    ans++;
        for(int j=0;j<i;j++)
        {
            v[a[i]+a[j]] = 1;
        }
    }
    cout<<ans<<endl;
    return 0;
}
 

第6题      叠罗汉     时限:1s 空间:256m

农场的N头奶牛喜欢玩叠罗汉游戏,就是几头奶牛1头奶牛接着1头奶牛的站成一柱子形状。不过奶牛的力量不一样,用数值Ci表示第i头奶牛它的上面最多可以站多少头奶牛,问这些奶牛最少可以站成几个柱子形状。

输入格式

输入文件名:638.in

第一行1个整数N,表示有多少头奶牛。1<=N<=1000

第二行N个正整数Ci,表示这些奶牛的力量。0<=Ci<=1000

输出格式

输出文件名:638.out

一个整数,表示最少成几个“罗汉”。

输入/输出例子1

输入:

5

0 2 1 2 2

输出:

2

 

样例解释

可以第1、第3、第2头奶牛从上向下叠罗汉;

4、第5头奶牛叠罗汉。

样例解释

样例解释

作答区域

#include<bits/stdc++.h>
using namespace std;
int a[105][105],n,num;
int main()
{
    int n,f,ans=0,c[1000]={0},k=0,d;
    cin>>n;
    for (int i=0;i<n;i++)
    {
        cin>>f;
        c[f]++;
    }
    while (k<n)
    {
        d=0;
        ans++;
        for (int i=0;i<1000;)
        {
            if (c[i]!=0&&i>=d)
            {
                c[i]--;k++;d++;
            }
            else  i++;
        }
    }
    cout<<ans;
    return 0;
}

第7题      候选人     时限:1s 空间:256m

N头奶牛为偶像比赛试镜。你是比赛的初级制作人。在试镜期间,您已经评估了每头奶牛的天赋和技能。

对于每个有效的italent [i]是天赋,skill[i]是技巧。你的任务是决定哪些奶牛进入选拔的第二阶段。

为了做到这一点,你提出了一个简单的规则:如果不存在奶牛B,使得奶牛B的天赋和技巧都比奶牛A高,那么奶牛A就能进入第二轮。

请计算能进入第二阶段的奶牛的数量。

输入格式

输入文件名: 639.in

第一行,一个整数N2 <= N <= 50

 接下来有N行,第i行是: talent [i]skill[i]1 <= talent [i], skill[i] <= 10000

输出格式

输出文件名: 639.out

一个整数。

输入/输出例子1

输入:

3

10 30

20 20

30 10

输出:

3

样例解释

样例解释

作答区域


#include<bits/stdc++.h>
using namespace std;
int t[60],s[60],n,w,a;
int main(){
    cin>>n;
    for(int i=0;i<n;i++)
     {
    cin>>t[i]>>s[i];
}
  for(int i=0;i<n;i++)
   {
      for(int j=0;j<n;j++)
    {
   if(t[i]<t[j] &&s[i]<s[j])
    {
   w++;
    break;
   }
   }
    }
   a=n-w;
cout<<a;
return 0;
}

 

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值