下面这样的方阵很有规律,称为蛇形方阵。例如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;
}
这样的分式运算我们都会。请编程计算两个分数相减的结果。
输入格式
输入文件名:634.in
第一行2个整数a和b,表示一个分数
,1<=a<b <=10000。
第二行2个整数c和d,表示一个分数
,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;
}
有两个数列A和B,那些在A中出现但不在B中出现的数就称为集合A和集合B的差:A-B。例如:A={1 ,4, 5, 2, 6} ,B={ 5,3,2,7} , 那么A-B = {1,4,6}。
现在给你2个集合A和B,求A-B有多少个数。
输入格式
输入文件名:636.in
第一行2个整数na和nb,表示集合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;
}
有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+2;8=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;
}
农场的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;
}
有N头奶牛为偶像比赛试镜。你是比赛的初级制作人。在试镜期间,您已经评估了每头奶牛的天赋和技能。
对于每个有效的i,talent [i]是天赋,skill[i]是技巧。你的任务是决定哪些奶牛进入选拔的第二阶段。
为了做到这一点,你提出了一个简单的规则:如果不存在奶牛B,使得奶牛B的天赋和技巧都比奶牛A高,那么奶牛A就能进入第二轮。
请计算能进入第二阶段的奶牛的数量。
输入格式
输入文件名: 639.in
第一行,一个整数N。2 <= 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;
}