001:奇偶數判斷
- 總時間限制: 1000ms 內存限制: 65536kB
描述
- 給定一個整數,判斷該數是奇數還是偶數。
輸入
- 輸入僅一行,一個大於零的正整數n。
輸出
- 輸出僅一行,如果n是奇數,輸出odd;如果n是偶數,輸出even。
樣例輸入
- 5
樣例輸出
- odd
AC
#include <iostream>
using namespace std;
int main(){
int n;
scanf("%d",&n);
if(n%2==0) printf("even\n");
else printf("odd\n");
return 0;
}
002:求一元二次方程的根
- 總時間限制: 1000ms 內存限制: 65536kB
描述
- 利用公式x1 = (-b + sqrt(bb-4ac))/(2a), x2 = (-b - sqrt(bb-4ac))/(2a)求一元二次方程ax2+ bx + c =0的根,其中a不等於0。
輸入
- 輸入一行,包含三個浮點數a, b, c(它們之間以一個空格分開),分別表示方程ax2 + bx + c =0的系數。
輸出
- 輸出一行,表示方程的解。
- 若b2 = 4 * a * c,則兩個實根相等,則輸出形式為:x1=x2=…。
- 若b2 > 4 * a * c,則兩個實根不等,則輸出形式為:x1=…;x2 = …,其中x1>x2。
- 若b2 < 4 * a * c,則有兩個虛根,則輸出:x1=實部+虛部i; x2=實部-虛部i,即x1的虛部系數大於等於x2的虛部系數,實部為0時不可省略。實部 = -b / (2a), 虛部 = sqrt(4ac-bb) / (2*a)
- 所有實數部分要求精確到小數點后5位,數字、符號之間沒有空格。
樣例輸入1
- 1.0 2.0 8.0
樣例輸入2
- 1 0 1
樣例輸出1
- x1=-1.00000+2.64575i;x2=-1.00000-2.64575i
樣例輸出2
- x1=0.00000+1.00000i;x2=0.00000-1.00000i
AC
#include<stdio.h>/*求一元二次方程的根*/
#include<math.h>
int main(){
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
if(b*b == 4*a*c){
printf("x1=x2=%.5lf",(0-b+sqrt(b*b-4*a*c))/(2*a));
}else if(b*b > 4*a*c){
double x1 = (0-b+sqrt(b*b-4*a*c))/(2*a);
double x2 = (0-b-sqrt(b*b-4*a*c))/(2*a);
printf("x1=%.5lf;x2=%.5lf",x1,x2);
}else if(b*b < 4*a*c){
double shi = (0-b) / (2*a);
double xu1 = sqrt(4*a*c-b*b) / (2*a);
printf("x1=%.5lf+%.5lfi;x2=%.5lf-%.5lfi",shi,xu1,shi,xu1);
}
return 0;
}
003:點和正方形的關系
- 總時間限制: 1000ms 內存限制: 65536kB
描述
- 有一個正方形,四個角的坐標(x,y)分別是(1,-1),(1,1),(-1,-1),(-1,1),x是橫軸,y是縱軸。寫一個程序,判斷一個給定的點是否在這個正方形內(包括正方形邊界)。
輸入
- 輸入一行,包括兩個整數x、y,以一個空格分開,表示坐標(x,y)。
輸出
- 輸出一行,如果點在正方形內,則輸出yes,否則輸出no。
樣例輸入
- 1 1
樣例輸出
- yes
AC
#include <iostream>
using namespace std;
int main(){
int x,y;
scanf("%d %d",&x,&y);
if((x<=1 && x>=(-1))&& (y<=1 && y>=(-1))) printf("yes\n");
else printf("no\n");
return 0;
}
004:蘋果和蟲子2
- 總時間限制: 1000ms 內存限制: 65536kB
描述
- 你買了一箱n個蘋果,很不幸的是買完時箱子里混進了一條蟲子。蟲子每x小時能吃掉一個蘋果,假設蟲子在吃完一個蘋果之前不會吃另一個,那么經過y小時你還有多少個完整的蘋果?
輸入
- 輸入僅一行,包括n,x和y(均為整數)。
輸出
- 輸出也僅一行,剩下的蘋果個數
樣例輸入
- 10 4 9
樣例輸出
- 7
提示
- 注意:是要求完整的蘋果數。
AC
#include <iostream>
using namespace std;
int main(){
int n,x,y,left;
scanf("%d %d %d",&n,&x,&y);
if(y%x==0)
left=n-y/x;
else
left=n-y/x-1;
if(left<0) left=0; //考慮如果吃完了?
printf("%d\n",left);
return 0;
}
005:簡單計算器
- 總時間限制: 1000ms 內存限制: 65536kB
描述
- 一個最簡單的計算器,支持+, -, *, / 四種運算。僅需考慮輸入輸出為整數的情況,數據和運算結果不會超過int表示的范圍。
輸入
- 輸入只有一行,共有三個參數,其中第1、2個參數為整數,第3個參數為操作符(+,-,*,/)。
##輸出 - 輸出只有一行,一個整數,為運算結果。然而:
- 如果出現除數為0的情況,則輸出:Divided by zero!
- 如果出現無效的操作符(即不為 +, -, *, / 之一),則輸出:Invalid operator!
樣例輸入
- 1 2 +
樣例輸出
- 3
提示
- 可以考慮使用if和switch結構。
AC
#include <iostream>
using namespace std;
int main(){
int a,b;
char c;
scanf("%d %d %c",&a,&b,&c);
if(b==0) printf("Divided by zero!\n");
else{
switch(c){
case '+':
printf("%d\n",a+b);
break;
case '-':
printf("%d\n",a-b);
break;
case '*':
printf("%d\n",a*b);
break;
case '/':
printf("%d\n",a/b);
break;
default:
printf("Invalid operator!\n");
}
}
return 0;
}
006:求整數的和與均值
- 總時間限制: 1000ms 內存限制: 65536kB
描述
- 讀入n(1 <= n <= 10000)個整數,求它們的和與均值。
輸入
- 輸入第一行是一個整數n,表示有n個整數。
- 第2~n+1行每行包含1個整數。每個整數的絕對值均不超過10000。
輸出
- 輸出一行,先輸出和,再輸出平均值(保留到小數點后5位),兩個數間用單個空格分隔。
樣例輸入
4
344
222
343
222
樣例輸出
- 1131 282.75000
AC
#include <iostream>
using namespace std;
int main(){
int n,m,sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&m);
sum += m;
}
printf("%d %.5lf\n",sum,(double)sum/n);
return 0;
}
007:整數序列的元素最大跨度值
- 總時間限制: 1000ms 內存限制: 65536kB
描述
- 給定一個長度為n的非負整數序列,請計算序列的最大跨度值(最大跨度值 = 最大值減去最小值)。
輸入
- 一共2行,第一行為序列的個數n(1 <= n <= 1000),第二行為序列的n個不超過1000的非負整數,整數之間以一個空格分隔。
輸出
- 輸出一行,表示序列的最大跨度值。
樣例輸入
6
3 0 8 7 5 9
樣例輸出
- 9
AC
#include <iostream>
using namespace std;
int main(){
int n,m,min=1001,max=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&m);
if(max<m) max=m;
if(min>m) min=m;
}
printf("%d\n",max-min);
return 0;
}
008:奧運獎牌計數
- 總時間限制: 1000ms 內存限制: 65536kB
描述
- 2008年北京奧運會,A國的運動員參與了n天的決賽項目(1≤n≤17)。現在要統計一下A國所獲得的金、銀、銅牌數目及總獎牌數。
輸入
- 輸入n+1行,第1行是A國參與決賽項目的天數n,其后n行,每一行是該國某一天獲得的金、銀、銅牌數目,以一個空格分開。
輸出
- 輸出1行,包括4個整數,為A國所獲得的金、銀、銅牌總數及總獎牌數,以一個空格分開。
樣例輸入
3
1 0 3
3 1 0
0 3 0
樣例輸出
- 4 4 3 11
AC
#include <iostream>
using namespace std;
int main(){
int n,j,y,t,s1=0,s2=0,s3=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d %d %d",&j,&y,&t);
s1 += j;
s2 += y;
s3 += t;
}
printf("%d %d %d %d\n",s1,s2,s3,s1+s2+s3);
return 0;
}
009:乘方計算
- 總時間限制: 1000ms 內存限制: 65536kB
描述
- 給出一個整數a和一個正整數n,求乘方an。
輸入
- 一行,包含兩個整數a和n。-1000000 <= a <= 1000000,1 <= n <= 10000。
輸出
- 一個整數,即乘方結果。題目保證最終結果的絕對值不超過1000000。
樣例輸入
- 2 3
樣例輸出
- 8
AC
#include <iostream>
using namespace std;
int main(){
int a,n,str;
scanf("%d %d",&a,&n);
str=a;
for(int i=2;i<=n;i++)
str *= a;
printf("%d\n",str);
return 0;
}
010:雞尾酒療法
- 總時間限制: 1000ms 內存限制: 65536kB
描述
- 雞尾酒療法,原指“高效抗逆轉錄病毒治療”(HAART),由美籍華裔科學家何大一於1996年提出,是通過三種或三種以上的抗病毒葯物聯合使用來治療艾 滋病。該療法的應用可以減少單一用葯產生的抗葯性,最大限度地抑制病毒的復制,使被破壞的機體免疫功能部分甚至全部恢復,從而延緩病程進展,延長患者生 命,提高生活質量。人們在雞尾酒療法的基礎上又提出了很多種改進的療法。為了驗證這些治療方法是否在療效上比雞尾酒療法更好,可用通過臨床對照實驗的方式 進行。假設雞尾酒療法的有效率為x,新療法的有效率為y,如果y-x大於5%,則效果更好,如果x-y大於5%,則效果更差,否則稱為效果差不多。下面給 出n組臨床對照實驗,其中第一組采用雞尾酒療法,其他n-1組為各種不同的改進療法。請寫程序判定各種改進療法效果如何。
輸入
- 第一行為整數n( 1 < n <= 20);
- 其余n行每行兩個整數,第一個整數是臨床實驗的總病例數(小於等於10000),第二個療效有效的病例數。
- 這n行數據中,第一行為雞尾酒療法的數據,其余各行為各種改進療法的數據。
輸出
- 有n-1行輸出,分別表示對應改進療法的效果:
- 如果效果更好,輸出better;如果效果更差,輸出worse;否則輸出same
樣例輸入
5
125 99
112 89
145 99
99 97
123 98
樣例輸出
same
worse
better
same
AC
#include <iostream>
using namespace std;
int main(){
int n,s1,s2;
double x=0,y=0;
scanf("%d",&n);
scanf("%d %d",&s1,&s2);
x=s2*1.0/s1;
for(int j=2;j<=n;j++){
scanf("%d %d",&s1,&s2);
y=s2*1.0/s1;
if(y-x>0.05) printf("better\n");
else{
if(x-y>0.05) printf("worse\n");
else printf("same\n");
}
}
return 0;
}
第三周結束!!!