2016年第四屆湘潭大學新生趣味程式設計競賽 題解
Age |
||
Accepted : 932 | Submit : 2426 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
Age題目描述今年是2016年,一個年齡小於99歲(出生當年為0歲)的人,把出生年份的前兩位和後兩位相加得到一個整數n。你能根據n,算出他有多少歲嗎? 輸入第一行輸入一個整數T(1≤T≤99),表示樣例的個數。 每行輸入一個整數n。 輸出每行輸出一個樣例的結果。 樣例輸入2 20 118 樣例輸出16 17 樣例解釋第1樣例,此人生於2000年;第2樣例,此人生於1999年。 |
#include <iostream> #include <string> #include <cstdio> #include <algorithm> #include <vector> #include <queue> #include <cmath> using namespace std; int main(){ int t; scanf("%d",&t); int n; while(t--){ scanf("%d",&n); int i; for(i=2016-98;i<=2016;i++){ if((i%100)+(i/100)==n){ printf("%d\n",2016-i); break; } } } return 0; }
Balance |
||
Accepted : 195 | Submit : 964 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
Balance題目描述小明有一架天平,小明想稱出1∼n克的物品,請問最少需要幾顆砝碼? 輸入第一行是一個整數T(1≤T≤10000),表示樣例的個數。 以後每行一個樣例,為一個整數 (1≤n≤109)。 輸出每行輸出一個樣例的結果。 樣例輸入3 1 4 40 樣例輸出1 2 4 |
#include <iostream> #include <string> #include <cstdio> #include <algorithm> #include <vector> #include <queue> #include <cmath> using namespace std; const int maxn = 30; pair<int, int> save[maxn]; int main(){ int t,i,p; p = -1; for(i=0;i<=30;i++){ save[++p].first = (pow(3,i)+1)/2; save[p].second = (pow(3,i+1)-1)/2; } scanf("%d",&t); int n; while(t--){ scanf("%d",&n); for(i=0;i<30;i++){ if(n>=save[i].first&&n<=save[i].second){ printf("%d\n",i+1); break; } } } return 0; }
Clock |
||
Accepted : 346 | Submit : 2164 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
Clock題目描述鐘的一圈是12小時,其中時針、分鐘都是勻速移動。一天從00:00~23:59,請問某一時刻,時針與分針的夾角是多少? 輸入第一行是一個整數T(1≤T≤1440),表示樣例的個數。 以後每行是一個時刻,格式為HH:MM。 輸出每行輸出一個樣例的結果,如果結果不是整數,小數部分不要輸出多餘的0。 樣例輸入2 00:01 00:30 樣例輸出5.5 165 |
#include <iostream> #include <string> #include <cstdio> #include <algorithm> #include <vector> #include <queue> #include <cmath> using namespace std; int main(){ int t; scanf("%d",&t); int n; string in; while(t--){ int i,j; cin>>in; double hour=0.0,min=0.0; int len = in.length(); hour = (double)(in[0]-'0')*10.0 + (double)(in[1]-'0'); if(hour>12){ hour -= 12; } min = (double)(in[3]-'0')*10.0 + (double)(in[4]-'0'); min = min*6; hour = (hour*30) + min/360*30; //cout<<min(abs(hour-min),360.0-(abs(min-hour))); printf("%g\n",abs(hour-min)<360.0-(abs(min-hour))?abs(hour-min):360.0-(abs(min-hour))); } return 0; }
Different Digits |
||
Accepted : 208 | Submit : 1015 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
Different Digits題目描述有一個n位數x,每個數碼都不一樣,可你知道x的後m(m<n)位構成的整數x′,請問滿足條件最小的x是多少? 輸入第一行是一個整數T(1≤T≤1000),表示樣例的個數。 每個樣例一行,為兩個整數n(2≤n≤10)和x的後m位的整數x′(0≤x′<987654321,x′沒有前導0且所有數碼都不一樣)。 輸出每行輸出一個樣例的結果。 樣例輸入2 3 12 4 12 樣例輸出312 3012 |
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
const int maxn = 1010;
const int INF = 0x3f3f3f3f;
int save[maxn];
bool vis[10];
int main(){
int t,i,j,n;
string in;
string res;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
cin>>in;
int m = in.length();
memset(vis, true, sizeof(vis));
for(i=0;i<in.length();i++){
vis[in[i]-'0'] = false;
}
for(i=0;i<in.length();i++){
res[i+n-m] = in[i];
}
for(i=1;i<=9;i++){
if(vis[i]){
res[0] = i+'0';
vis[i] = false;
break;
}
}
int p = 1;
for(i=0;i<=9;i++){
if(p==n-m){
break;
}
if(vis[i]){
res[p] = i+'0';
p++;
}
}
for(i=0;i<n;i++){
cout<<res[i];
}
printf("\n");
}
return 0;
}
Estrella's Travel |
||
Accepted : 100 | Submit : 258 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
Estrella's Travel題目描述Estrella喜歡旅行,她準備去自己心儀的城市看風景。她精心選擇了一條線路,準備自駕遊。自駕線路是一條鏈路,上有n+1座城市,編號依次為0∼n,Estrella住在0號城市,目的地是n號城市。Estrella為了環保,駕駛了一輛純電動車,所以最多隻能一次行駛m個城市的距離。如果Estrella在某個城市(包括n號城市)停留,自然會需要一些費用,當然每個城市的花費是不一樣,Estrella想知道,這個花費最小是多少? 輸入多組資料輸入。 輸出對於每個資料,輸出一行,表示總的花費。 樣例輸入5 2 1 2 3 4 5 6 2 6 5 4 3 2 1 樣例輸出9 9 樣例解釋第1個樣例,依次到城市1,3,5,所以花費為1+3+5=9; |
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
int n,m;
const int maxn = 1010;
const int INF = 0x3f3f3f3f;
int save[maxn];
int dp[maxn];
int main(){
int t,i,j;
while(~scanf("%d%d",&n,&m)){
for(i=1;i<=n;i++){
scanf("%d",&save[i]);
}
dp[0] = 0;
for(i=1;i<=n;i++){
int now = INF;
if(i>=m){
for(j=i-m;j<i;j++){
now = min(now,dp[j]);
}
dp[i] = now + save[i];
}else{
for(j=0;j<i;j++){
now = min(now,dp[j]);
}
dp[i] = now + save[i];
}
}
cout<<dp[n]<<endl;
}
return 0;
}
Finally,Which light is on? |
||
Accepted : 225 | Submit : 1026 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
Finally, which light is on?題目描述有n盞燈,編號1~n。一開始燈都是關著的,每個燈有一個開關,按奇數次為開啟,按偶數次為關閉。我們先把編號為1的倍數的燈按一下開關,再把編號為2的倍數的燈按一下開關,依次下去,一直到把編號為n的倍數燈按一下,請問最後有多少盞燈是亮的? 輸入第一行是一個整數T(1≤T≤10000),表示樣例的個數。 以後的每行一個樣例,為一個整數n(1≤n≤109)。 輸出每行輸出一個樣例的結果。 樣例輸入2 1 5 樣例輸出1 2 樣例解釋第2個樣例,先把1~5都開啟;然後把2,4關掉;然後把3關掉;然後把4開啟;然後把5關掉;所以,最後剩1和4是亮著的。 |
#include <iostream> #include <string> #include <cstdio> #include <algorithm> #include <vector> #include <queue> #include <cmath> using namespace std; int n,m; const int maxn = 31630; const int INF = 0x3f3f3f3f; long long save[maxn]; int main(){ //cout<<sqrt(1000000000)<<endl; int t,i,j; scanf("%d",&t); int p = 0; for(i=1;i<=31623;i++){ save[++p] = i*i; //cout<<save[p]<<endl; } while(t--){ scanf("%d",&n); if(n==1){ printf("1\n"); continue; } for(i=1;i<=n;i++){ //cout<<save[i]<<" "; if(save[i]>n){ printf("%d\n",i-1); break; } } } return 0; }
Gemstone Bracelet | ||
Accepted : 207 | Submit : 741 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
Gemstone Bracelet題目描述mumuchacha是一個愛美的小姑娘,她有一條漂亮的寶石手鍊,寶石手鍊上有N個不同的寶石,每一顆寶石都有它特定的魅力值。 mumuchacha每天都把手鍊戴在手上,她很喜歡擡起手來看她的手鍊,但是每次都只能看到一部分(M個寶石),因為還有一部分被手臂擋住了,所以她不斷的旋轉手鍊,每次轉動一顆寶石,使每次看到的寶石都不同,求mumuchacha每次旋轉後看到的寶石魅力值之和的最大值。 輸入有多個樣例,輸入的第一行是樣例個數T 輸出每行輸出一個整數,即魅力值和的最大值 樣例輸入2 5 3 1 2 3 4 5 10 4 6 7 4 5 8 4 2 5 9 4 樣例輸出12 26 |
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
int n,m;
const int maxn = 100000;
const int INF = 0x3f3f3f3f;
int save[maxn];
int main(){
int t;
scanf("%d",&t);
while(t--){
int i,j;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++){
scanf("%d",&save[i]);
}
int now = 0,res = 0;
for(i=0;i<m;i++){
now += save[i];
}
res = now;
for(i=1;i<n;i++){
now += save[(i+m-1)%n];
now -= save[(n+(i-1))%n];
res = max(res,now);
}
printf("%d\n",res);
}
return 0;
}
相關推薦
2016年第四屆湘潭大學新生趣味程式設計競賽 題解
Age Accepted : 932 Submit : 2426 Time Limit : 1000 MS Memory Limit : 65536 KB Age 題目描述 今年是2016年,一個年齡小於99歲(出生當年為0歲)的人,把出生年份的前兩位和後兩位相加得到一個整數n。
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 四平方和(程式設計大題)
2016年第七屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 四平方和 四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 生日蠟燭(結果填空)
2016年第七屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 生日蠟燭 某君從某年開始每年都舉辦一次生日party,並且每次都要吹熄與年齡相同根數的蠟燭。 現在算起來,他一共吹熄了236根蠟燭
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 剪郵票(結果填空)
2016年第七屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 剪郵票 如【圖1.jpg】, 有12張連在一起的12生肖的郵票。 現在你要從中剪下5張來,要求必須是連著的。 (僅僅連線一個角不
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 煤球數目(結果填空)
煤球數目有一堆煤球,堆成三角稜錐形。具體:第一層放1個,第二層3個(排列成三角形),第三層6個(排列成三角形),第四層10個(排列成三角形),....如果一共有100層,共有多少個煤球?請填表示煤球總數
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 湊算式(結果填空) DFS
//A + B/C + DEF/GHI = 10 湊算式 標記一下1-9個數,再搜尋一下就好了#include <iostream> using namespace std; bool visited[10]; int ans[100]; int k = 0; i
[藍橋杯][2013年第四屆真題]買不到的數目
題目描述 小明開了一家糖果店。他別出心裁:把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣。 小朋友來買糖的時候,他就用這兩種包裝來組合。當然有些糖果數目是無法組合出來的,比如要買 10 顆糖。 你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。大於17的任何數字都
[藍橋杯][2013年第四屆真題]危險係數
問題描述 抗日戰爭時期,冀中平原的地道戰曾發揮重要作用。 地道的多個站點間有通道連線,形成了龐大的網路。但也有隱患,當敵人發現了某個站點後,其它站點間可能因此會失去聯絡。 我們來定義一個危險係數DF(x,y): 對於兩個站點x和y (x != y), 如果能找到一個站點z,當z被敵人破壞後,
2016年第七屆藍橋杯
交換瓶子有N個瓶子,編號 1 ~ N,放在架子上。比如有5個瓶子:2 1 3 5 4要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為:1 2 3 4 5對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。輸入格式
2016年第七屆藍橋杯省賽A組試題
2016年第七屆藍橋杯省賽(C/C++) A組試題及參考答案 第七屆藍橋杯省賽結束了,趁著還有點印象,趕緊把答案記一下。 歡迎加入à程式設計學習交流QQ群:23228338,一起交流藍橋杯答案及程式設計交流學習。群檔案有答案下載 1.父親和兒子(列舉) 父親的年齡兩個數字
2016年第七屆藍橋杯決賽心得
這次比賽,成績並不是太理想,雖然我是一個渣二本(河南農業大學,一聽,種地的還學程式設計???),卻金剛不可奪其志,毅然決然的報了A組C,學院不支援,最後倔著脾氣自費報名了。省賽順利通過,可是決賽只拿了一個國三。想想要總結一下這次的得失,可是感覺我應該從頭分析一下
2016年第七屆藍橋杯試題(C/C++本科B組)
3.湊算式 B DEF A + --- + ------- = 10 C GHI (如果顯示有問題,可以參見【圖1.jpg】) 這個算式中A~I代表1~9的數字,不同的字母代表不同的數字。 比如: 6+8/3+952/
藍橋杯2016年第7屆省賽
結果填空 煤球數目 有一堆煤球,堆成三角稜錐形。具體: 第一層放1個, 第二層3個(排列成三角形), 第三層6個(排列成三角形), 第四層10個(排列成三角形), …. 如果一共有100層,共有多少個煤球? 171700 public
2013年第四屆藍橋杯試題(Java本科B組)
1.標題: 世紀末的星期 曾有邪教稱1999年12月31日是世界末日。當然該謠言已經不攻自破。 還有人稱今後的某個世紀末的12月31日,如果是星期一則會.... 有趣的是,任何一個世紀末的年份的12月31日都不可能是星期一!! 於是,“謠言製造商”又修改為星期日....
2016年第七屆藍橋杯省賽(C/C++ A組)
此處有目錄↑ 基本都是暴力搜尋解決,最後兩道演算法題不會 - - 1.父親和兒子 (列舉) 父親年齡是兩位數,且比兒子大27歲,問有多少種可能的情況?(父親30歲,兒子3歲也符合題意) 直接列舉父親年齡即可 答案是:7 #include <cstdio
2016年第七屆藍橋杯省賽C /C++ A組 1~8題題解
部分轉載自:http://blog.csdn.net/idealism_xxm/article/details/50937688還有:http://blog.csdn.net/summonlight/article/details/61427968題目連線:http://ww
2013年第四屆藍橋杯試題(C/C++本科B組)
1 大數學家高斯有個好習慣:無論如何都要記日記。 他的日記有個與眾不同的地方,他從不註明年月日,而是用一個整數代替,比如:4210 後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。這或許也是個好習慣,它時時刻刻提醒著主人:日子又過去一天,
煤球數目(2016年第七屆藍橋杯c/c++省賽B組(1題))
第一題 :煤球數目 題目敘述: 有一堆煤球,堆成三角稜錐形。具體: 第一層放1個, 第二層3個(排列成三角形), 第三層6個(排列成三角形), 第四層10個(排列成三角形), …. 如果
藍橋杯2016年第七屆決賽C_C++程式設計本科B組
1.一步之遙 從昏迷中醒來,小明發現自己被關在X星球的廢礦車裡。 礦車停在平直的廢棄的軌道上。 他的面前是兩個按鈕,分別寫著“F”和“B”。 小明突然記起來,這兩個按鈕可以控制礦車在軌道上前進和後退。 按F,會前進97米。按B會後退127米。
2013年第四屆藍橋杯省賽C++B組——1、高斯日記
題目標題: 高斯日記 大數學家高斯有個好習慣:無論如何都要記日記。 他的日記有個與眾不同的地方,他從不註明年月日,而是用一個整數代替,比如:4210 後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。這或許也是個好習慣,它時時刻刻提醒著主人: