藍橋杯訓練第一次作業
題目來自於http://oj.acmclub.cn/
當然其中包括來自其他各大OJ平臺的題目
直接開始咯
第一次題目比較基礎
然而J題還是沒有自己做出來
那麼就把它拿出來單獨寫吧
1001A
題目描述
輸入兩個數A,B,輸出A+B的值。
輸入
輸入多組資料:每組由兩個整數(a和b)構成,a和b之間用空格隔開,每組資料單獨佔一行。
因為不知道有多少組資料,請想辦法判斷輸入何時結束。
輸出
每組的兩個整數(a和b)求和並輸出,每組的求和結果獨佔一行
樣例輸入
1 2
12 24
400 500
樣例輸出
3
36
900
#include <iostream>
using namespace std;
int main()
{
int A,B;
while(cin>>A>>B)
{
cout<<A+B<<endl;
}
return 0;
}
1002B
題目描述
輸入兩個數A,B,輸出A+B的值。
輸入
第一行是資料的組數N,從第二行開始是N組由兩個整數(a和b)構成的資料,a和b之間用空格隔開,每組輸入單獨佔一行
輸出
每組的兩個整數(a和b)求和並輸出,每組的求和結果獨佔一行
樣例輸入
2
1 2
10 20
樣例輸出
3
30
#include <iostream>
using namespace std;
int main()
{
int N,A,B;
cin>>N;
for(int i=1;i<=N;i++)
{
while(cin>>A>>B)
{
cout<<A+B<<endl;
}
}
return 0;
}
1003C
題目描述
輸入兩個數A,B,輸出A+B的值。
輸入
多組資料:每組由兩個整數(a和b)構成,a和b之間用空格隔開,每組輸入單獨佔一行。
當輸入為 0 0 時,輸入結束。0 0這組資料不處理。
輸出
對於每一組測試用例,輸出齊對應的和,每組資料一行。
樣例輸入
1 2
3 4
10 20
0 0
樣例輸出
3
7
30
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
while(cin>>a>>b)
{
if(a==0&&b==0)
{
exit(0);
}
else
{
cout<<a+b<<endl;
}
}
return 0;
}
1004D
題目描述
多個數求和。
輸入
輸入包含多個測試用例。每個測試用例包含一個正整數N,隨後是N個整數跟在同一行上。當某個測試用例以0開始,終止輸入,且該用例不處理。
輸出
對於每一組測試用例,輸出齊對應的和,每組資料一行。
樣例輸入
3 1 2 4
1 23
5 1 3 5 7 9
0
樣例輸出
7
23
25
#include<bits/stdc++.h>
using namespace std;
int main()
{
int N,a[100],sum;
while(cin>>N)
{
if(N==0)
{
exit(0);
}
else
{
{
sum=0;
for(int j=1;j<=N;j++)
{
cin>>a[j];
sum=sum+a[j];
}
cout<<sum<<endl;
}
}
}
return 0;
}
1005E
題目描述
多個數求和。
輸入
第一行為N,下面緊跟N行資料。每行資料:開頭為M,後面緊跟M個數。
輸出
輸出每一行M個整數的和,每個資料一行。
樣例輸入
2
1 1
2 3 4
樣例輸出
1
7
#include<iostream>
using namespace std;
int main()
{
int N,M,a[100],sum;
cin>>N;
for(int i=1;i<=N;i++)
{
cin>>M;
sum=0;
for(int j=1;j<=M;j++)
{
cin>>a[j];
sum=sum+a[j];
}
cout<<sum<<endl;
}
return 0;
}
1009F
題目描述
輸入一行字元,分別統計出其中英文字母、空格、數字和其它字元的個數。
輸入
輸出
樣例輸入
a 1,
樣例輸出
1
1
1
1
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int a=0,b=0,c=0,d=0;
char ch;
while((ch=getchar())!='\n')
{
if((ch<='z')&&(ch>='a')||(ch<='Z')&&(ch>='A'))
{
a++;
}
else if(ch==' ')
{
b++;
}
else if((ch<='9')&&(ch>='0'))
{
c++;
}
else d++;
}
cout<<a<<endl<<b<<endl<<c<<endl<<d;
return 0;
}
1011G
題目描述
程式設計,輸入一個10進位制正整數,然後輸出它所對應的八進位制數。
輸入
輸出
樣例輸入
10
樣例輸出
12
#include <stdio.h>
int main()
{
int num;
scanf("%d",&num);
printf("%o",num);
return 0;
}
1018H
題目描述
谷學長有一個非常簡單的問題給你,給你兩個整數A和B,你的任務是計算A+B。
輸入
輸入的第一行包含一個整數T(T<=20)表示測試例項的個數,然後2*T行,分別表示A和B兩個正整數。注意整數非常大,那意味著你不能用32位整數來處理。你可以確定的是整數的長度不超過1000。
輸出
對於每一個樣例,你應該輸出兩行,第一行是"Case #:",#表示第幾個樣例,第二行是一個等式"A+B=Sum",Sum表示A+B的結果。注意等式中有空格。
樣例輸入
2
1
2
112233445566778899
998877665544332211
樣例輸出
Case 1:
1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char a[1050];
char b[1050];
int c[1050];
int d[1050];
int e[1050];
int n,p;
cin>>n;
for(p=1;p<=n;p++)
{
cin>>a;
cin>>b;
int m=0,l=0;
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
memset(e,0,sizeof(e));
for(int i=0;i<strlen(a);i++)
{
d[i]=a[strlen(a)-1-i]-48;
}
for(int i=0;i<strlen(b);i++)
{
e[i]=b[strlen(b)-1-i]-48;
}
while(l<=strlen(a)||l<=strlen(b))
{
c[l]=d[l]+e[l]+m;
m=c[l]/10;
c[l]=c[l]%10;
l++;
}
if(m!=0) c[l]=m;
else
{
l--;
if(c[l]==0) l=l-1;
}
cout<<"Case "<<p<<":"<<endl;
cout<<a<<" + "<<b<<" = ";
for(int j=l;j>=0;j--)
{
cout<<c[j];
}
cout<<endl;
}
return 0;
}
1019I
題目描述
最近谷學長遇到了麻煩的問題,你能幫幫他嗎?
題目是這樣的:計算SUM(n) = 1 + 2 + 3 + … + 10^n。滿足n<=100 000。
輸入
輸入包含多組資料,每組資料一行,包括一個整數n(n<=100 000)。當n=-1時輸入終止。
輸出
對於每個n輸出相應的和。
樣例輸入
1
2
-1
樣例輸出
55
5050
提示
人家……人家真的不是求和題啦 喵~
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
if(n>1)
{
for(int i=1;i<=2;i++)
{
cout<<"5";
for(int j=1;j<=(n-1);j++)
{
cout<<"0";
}
}
}
else if(n==0)
{
cout<<"1";
}
else if(n==1)
{
cout<<"55";
}
else
{
break;
}
cout<<endl;
}
return 0;
}
1025J
1028K
題目描述
輸入一個正整數,輸出它的所有質數的因子(如180的質數因子為2、2、3、3、5)
輸入
輸出
樣例輸入
180
樣例輸出
2 2 3 3 5
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
long int num;
cin>>num;
int n=2;
while(num!=1)
{
if(num%n==0)
{
cout<<n<<' ';
num=num/n;
}
else
{
n++;
}
}
cout<<endl;
return 0;
}
1029L
題目描述
已知三位整數x和y滿足x+y=1333,其中x的個位數是y的百位數,y的個位數是x的百位數,它們的十位數一樣。求滿足這樣條件的x和y。
輸入
輸出
419+914=1333
…
按X從小到大輸出,每個等式一行
樣例輸入
樣例輸出
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int x,y,a,b,c;
for(b=1;b<=9;b++)
{
for(a=3;a<=9;a++)//有題目條件可判斷出3+9是最小的
{
for(c=9;c>=3;c--)
{
x=(100*a)+(10*b)+c;
y=(100*c)+(10*b)+a;
if((x+y)==1333)
{
printf("%d+%d=1333\n",x,y);
}
}
}
}
return 0;
}
1030M
題目描述
編寫一個程式,列印輸出半徑為1到10的圓的面積,若面積在40到90之間則予以列印,否則,不予列印。
輸入
輸出
r=? area=??.??
…
保留兩位小數
樣例輸入
樣例輸出
#include <iostream>
#include <iomanip>
#define PI 3.1415926
using namespace std;
int main()
{
float S;
for(int i=1;i<=10;i++)
{
S=PI*i*i;
if((S>=40)&&(S<=90))
{
cout<<"r="<<i<<" area="
<<fixed<<setprecision(2)<<S<<endl;
}
}
return 0;
}
1031N
題目描述用
選擇法對10個整數排序。
輸入
輸出
樣例輸入
9 8 7 6 5 4 3 2 1 0
樣例輸出
0
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
cin>>a[i];
}
sort(a,a+10);
for(int k=0;k<10;k++)
{
cout<<a[k]<<endl;
}
return 0;
}
1032O
題目描述
輸入20個整數,輸出其中能被陣列中其它元素整除的那些陣列元素。
輸入
輸出
樣例輸入
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
樣例輸出
4
6
8
9
10
12
14
15
16
18
20
21
#include<iostream>
using namespace std;
int main()
{
int a[20];
for(int i=0;i<20;i++)
{
cin>>a[i];
}
for(int i=0;i<20;i++)
{
for(int j=0;j<20;j++)
{
if((a[i]%a[j]==0)&&(i!=j))
{
cout<<a[i]<<endl;
break;
}
}
}
return 0;
}
1040P
題目描述
有三個整數a b c,由鍵盤輸入,輸出其中的最大的數。
輸入
一行陣列,分別為a b c
輸出
a b c其中最大的數
樣例輸入
10 20 30
樣例輸出
30
#include <iostream>
using namespace std;
int main()
{
int a,b,c,temp;
cin>>a>>b>>c;
a>b?temp=a:temp=b;
temp>c?cout<<temp:cout<<c;
return 0;
}
1042Q
題目描述
給出一百分制成績,要求輸出成績等級‘A’、‘B’、‘C’、‘D’、‘E’。 90分以上為A 80-89分為B 70-79分為C 60-69分為D 60分以下為E
輸入
一個整數0-100以內
輸出
一個字元,表示成績等級
樣例輸入
90
樣例輸出
A
#include<iostream>
using namespace std;
int main()
{
int n,k;
cin>>n;
if(n>=90) k=1;
else if((n>=80)&&(n<=89)) k=2;
else if((n>=70)&&(n<=79)) k=3;
else if((n>=60)&&(n<=69)) k=4;
else k=5;
switch(k)
{
case 1:cout<<"A"<<endl;break;
case 2:cout<<"B"<<endl;;break;
case 3:cout<<"C"<<endl;;break;
case 4:cout<<"D"<<endl;;break;
case 5:cout<<"E"<<endl;;break;
}
return 0;
}
1047R
題目描述
求Sn=a+aa+aaa+…+aa…aaa(有n個a)之值,其中a是一個數字,本題中,假設a=2。
例如:2+22+222+2222+22222(n=5),n由鍵盤輸入。
輸入
n
輸出
和Sn
樣例輸入
5
樣例輸出
24690
#include <iostream>
using namespace std;
int main()
{
int n,num=1,sum=0;
cin>>n;
for(int i=0;i<n;i++)
{
if(i==0)
{
num=2;
sum+=num;
}
else
{
num=num*10+2;
sum+=num;
}
}
cout<<sum<<endl;
return 0;
}