1. 程式人生 > 其它 >吳凡的題庫——快快程式設計1701+

吳凡的題庫——快快程式設計1701+

  1. 非常棒
題目描述
請寫一個程式,使用一句Very good介面,具體形狀請參考下文中的輸出樣例。
注意:
一共3行,每一行都有一個換行,行之間不能有多餘空行;
行末不應該出現多餘空格。
輸入輸出格式
輸入格式
無
輸出格式
無
輸入輸出樣例
輸入樣例#1:
無
輸出樣例#1:
**********
Very good!
**********

輸入樣例#2:

輸出樣例#2:

輸入樣例#3:

輸出樣例#3:

#include<iostream>
using namespace std;
int main(){
	cout<<"**********"<<endl;
	cout<<"Very good!"<<endl;
	cout<<"**********"<<endl;
	return 0;
}
  1. 美麗的等邊三角形
題目描述
請寫一個程式,輸出一個等邊三角形,具體形狀請參考下文中的輸出樣例。
注意:
一共3行,每一行都有一個換行,行之間不能有多餘空行。
行末不應該出現多餘空格。
第3行開頭沒有空格。
同一行的*號之間可能需要空格。
輸入輸出格式
輸入格式
無
輸出格式
無
輸入輸出樣例
輸入樣例#1:
無
輸出樣例#1:
  *
 * *
* * *
輸入樣例#2:
無
輸出樣例#2:
無
輸入樣例#3:
無
輸出樣例#3:
無
#include<iostream>
using namespace std;
int main(){
	cout<<"  *"<<endl;
	cout<<" * *"<<endl;
	cout<<"* * *"<<endl;
	return 0;
}
  1. 口算王子
題目描述
口算王子就是你,兩個數字間的運算對你來說就是小菜一碟。已知一條計算式子,請你回答出計算結果。
輸入輸出格式
輸入格式
輸入檔案calculation.in  輸入一行包含一條算式,包含兩個正整數a,b,均不超過10^9。這兩個數中間有一個運算子號c,可能是加號+ ,或者減號-,或者乘號*。這一行內沒有空格。
輸出格式
輸出檔案calculation.out 輸出一個整數。
輸入輸出樣例
輸入樣例#1:
3+6
輸出樣例#1:
9
輸入樣例#2:
6*16
輸出樣例#2:
96
輸入樣例#3:
12345*54321
輸出樣例#3:
670592745
#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("calculation.in", "r", stdin);
	freopen("calculation.out", "w", stdout);
	long long a, b, ans;
	char c;
	cin>>a>>c>>b;
	if(c == '+')
	    ans=a+b;
	else if (c == '-')
	    ans=a-b;
	else
	    ans=a*b;
	cout<<ans<<endl;
	return 0;
}

  1. 閏年統計
題目描述
給定兩個年份a,b ,請統計從a到b的年份裡有幾個閏年。
注意:統計時包含a,b兩年本身在內。
輸入輸出格式
輸入格式
輸入檔案leapyear.in 輸入一行為正整數a,b,1<=a<=b<=9999。
輸出格式
輸出檔案leapyear.out 輸出一個整數。
輸入輸出樣例
輸入樣例#1:
2000 2020
輸出樣例#1:
6
輸入樣例#2:
21 23
輸出樣例#2:
0
輸入樣例#3:

輸出樣例#3:

#include<bits/stdc++.h>
using namespace std;
bool isLeap(int y){
	return y%400==0||y%4==0&&y%100!=0;
}
int main(){
	freopen("leapyear.in", "r", stdin);
	freopen("leapyear.out", "w", stdout);
	int a,b,cnt;
	cin>>a>>b;
	for(int i = a;i <= b; i++){
		if(isLeap(i))
		    cnt++;
	}
	cout<<cnt<<endl;
	return 0;
}
  1. 迴文數統計
題目描述
輸入n個正整數,判斷每個數是否為迴文數。
輸入輸出格式
輸入格式
輸入檔案palindrome.in  輸入第一行為正整數n,n<=100。第二行為n個正整數,由空格隔開,均不超過10^18。
輸出格式
輸出檔案palindrome.out 輸出一行,共n個結果,每個結果為Yes或No,由空格隔開。
輸入輸出樣例
輸入樣例#1:
5
2020 12321 567765 1991 2000000
輸出樣例#1:
No Yes Yes Yes No
輸入樣例#2:

輸出樣例#2:

輸入樣例#3:

輸出樣例#3:

#include<bits/stdc++.h>
using namespace std;
bool isHW(string s){
    int l=0;
    int r=s.size()-1;
    while(l<r){
        if(s[l]!=s[r])
            return 0;
        l++;
        r--;
    }
    return 1;
}
int main(){
    freopen("palindrome.in", "r", stdin);
    freopen("palindrome.out", "w", stdout);
    int n;
    cin>>n;
    for(int i = 0; i < n;++i){
    	string s;
    	cin>>s;
    	if(isHW(s))
    	    cout<<"Yes"<<" ";
    	else
    	    cout<<"No"<<" ";
	}
	return 0;
}
  1. 西佳佳偶像天團0
題目描述
西佳佳偶像天團共k人,編號1到k。第i人的顏值為x[i],團內顏值最低者成為團長,若有多人一樣醜,就選編號最小的那人。求團長是幾號,顏值是多 少。
輸入輸出格式
輸入格式
輸入檔案idol.in 輸入第一行為k,1<=k<=200000。第二行為k個正整數,每個數都不超過100000。
輸出格式
輸出檔案idol.out 輸出共2個數字,由空格隔開。
輸入輸出樣例
輸入樣例#1:
10
4 3 2 1 2 3 4 5 4 6
輸出樣例#1:
4 1
輸入樣例#2:
5
7 6 9 7 6
輸出樣例#2:
2 6
輸入樣例#3:

輸出樣例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("idol.in", "r", stdin);
	freopen("idol.out", "w", stdout);
	int n,idols[200001];
	cin>>n;
	for(int i = 0; i < n; i ++){
		cin>>idols[i];
	}
	cout<<min_element(idols, idols+n) - idols + 1<<" "<<*min_element(idols, idols + n);
	return 0;
}
  1. 長方形面積
題目描述
請計算下面長方形的面積,結果保留2位小數。
長方形的面積計算公式:面積=長*寬
第一行輸出第一個長方形的面積:長3,寬2,注意結果要保留2位小數
第二行輸出第二個長方形的面積:長4,寬2.6,注意結果要保留2位小數
第三行輸出第三個長方形的面積:長5.4,寬5.6,注意結果要保留2位小數
輸入輸出格式
輸入格式
無
輸出格式
見題目描述
輸入輸出樣例
輸入樣例#1:
無
輸出樣例#1:
無
輸入樣例#2:

輸出樣例#2:

輸入樣例#3:

輸出樣例#3:

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
	cout<<fixed<<setprecision(2)<<3.0 * 2.0<<endl;
	cout<<fixed<<setprecision(2)<<4.0 * 2.6<<endl;
	cout<<fixed<<setprecision(2)<<5.4 * 5.6<<endl;
	return 0;
}
  1. 最高的山
題目描述
有n座山,編號從1到n,第i座山的高度為hi,請問其中最高的山是哪一座?
輸入輸出格式
輸入格式
第一行一個正整數n,表示山的數量,n<=1000。
第二行n個正整數,中間由空格隔開。山的高度不超過10000。

輸出格式
一個正整數,最高的山最早出現的編號。
輸入輸出樣例
輸入樣例#1:
5
1 2 3 4 6

輸出樣例#1:
5
輸入樣例#2:
5
6 4 3 2 1

輸出樣例#2:
1
輸入樣例#3:

輸出樣例#3:

#include<iostream>
using namespace std;
int main(){
	int n,high[10005],num;
	cin>>n;
	for(int i = 0;i < n;i++){
		cin>>high[i];
	}
	num = 0;
	for(int i = 0;i < n;i++){
		if(high[i] > high[num])
			num = i;
	}
	cout<<num + 1;
	return 0;
}
  1. 口算王
題目描述
口算大王就是你,幾個數字間的四則運算對你來說就是小菜一碟。已知一條計算式子,請你回答出計算結果。例如:
3-5=-2
1+2*3=7
8-2*2-1=3
輸入輸出格式
輸入格式
100。
【資料規模】
10%資料, 全部數字都是1位數
10%資料, 恰有1個運算子號
10%資料, 恰有2個運算子號
100%資料, 最多有8個運算子號。
輸出格式
輸出檔案calculator.out  輸出一個整數,代表計算結果。
輸入輸出樣例
輸入樣例#1:
3-5
輸出樣例#1:
-2
輸入樣例#2:
10-2*2-1
輸出樣例#2:
5
輸入樣例#3:
無
輸出樣例#3:
無
#include<bits/stdc++.h>
using namespace std;
stack<int> num;
stack<char> op;
void solve(){
	while(!op.empty()){
		char z=op.top();
		op.pop();
		int y=num.top();
		num.pop();
		int x=num.top();
		num.pop();
		if(z=='+')x+=y;
		else x-=y;
		num.push(x);
	}
}
int main(){
	freopen("calculator.in","r",stdin);
	freopen("calculator.out","w",stdout);
	int a,b;
	char c;
	cin>>a;
	num.push(a);
	while(cin>>c>>b){
		if(c=='*'){
			a=num.top();
			num.pop();
			a*=b;
			num.push(a);
		}
		else{
			solve();
			op.push(c);
			num.push(b);
		}
	}
	solve();
	cout<<num.top()<<endl;
	return 0;
}
  1. train-螺旋矩陣(同150,271)
  2. train-排座椅(同504)
  3. 高手集訓
題目描述
太戈程式設計團隊聚集了本市眾多的程式設計高手。你作為總教練,要為高手們安排集訓計劃。課程表裡有連續的n天可以供你選擇,每天都有專 題課程。其中第i天的專題趣味程度為h[i]。假設你選擇了其中連續的若干天,從第l天到第r天。那麼,

訓練效果 = h[l]*1 + h[l+1]*2 + ... + h[r]*(r-l+1)

隨著訓練的深入進行,每天的趣味程度會得到更多倍數的效果。



目前有m種訓練方案,每種方案由起始時間和結束時間來描述。請對每種方案輸出訓練效果。

輸入輸出格式
輸入格式
輸入檔案training.in
輸入第一行為正整數n和m, 均不超過100000。第二行為n個正整數代表每天專題的趣味程度,均不超過100000。隨後共m行,每行為兩個正整數l,r, 保證1<=l<=r<=n。
輸出格式
輸出檔案training.out
輸出一行共m個整數,由空格隔開。
輸入輸出樣例
輸入樣例#1:
3 2
5 6 7
1 3
2 3
輸出樣例#1:
38 20
【說明】5*1+6*2+7*3=38;6*1+7*2=20。
輸入樣例#2:
無
輸出樣例#2:
無
輸入樣例#3:
無
輸出樣例#3:
無
#include<bits/stdc++.h>
#define N 100003
#define int long long
using namespace std;
int h[N],s[N],g[N],n,m,l,r;
void input(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>h[i];
}
void solveBF(){
	for(int i=1;i<=m;i++){
		cin>>l>>r;
		int ans=0;
		for(int j=l;j<=r;j++)ans+=h[j]*(j-l+1);
		cout<<ans<<" ";
	}
}
void solve(){
	for(int i=1;i<=n;i++)s[i]=s[i-1]+h[i];
	for(int i=1;i<=n;i++)g[i]=g[i-1]+h[i]*i;
	for(int i=1;i<=m;i++){
		cin>>l>>r;
		cout<<g[r]-g[l-1]-(s[r]-s[l-1])*(l-1)<<" ";
	}
}
signed main(){
	freopen("training.in","r",stdin);
	freopen("training.out","w",stdout);
	input();
	if(n<=1000&&m<=1000)solveBF();
	else solve();
	return 0;
}