試題 A:組隊
本題總分:5分
【問題描述】
作為籃球隊教練,你需要從以下名單中選出 1號位至 5號位各一名球員,
組成球隊的首發陣容。
每位球員擔任 1號位至 5號位時的評分如下表所示。請你計算首發陣容 1
號位至5號位的評分之和最大可能是多少?
答案:490(該題需考慮清楚,一個人不能擔任兩個位置,98+99+98+97+98=490)
試題 B:年號字串
本題總分:5分
【問題描述】
小明用字母 A對應數字 1,B對應 2,以此類推,用 Z對應 26。對於 27
以上的數字,小明用兩位或更長位的字符串來對應,例如 AA對應27,AB對
應28,AZ對應52,LQ對應329。
請問2019對應的字符串是什么?
【問題描述】
小明用字母 A對應數字 1,B對應 2,以此類推,用 Z對應 26。對於 27
以上的數字,小明用兩位或更長位的字符串來對應,例如 AA對應27,AB對
應28,AZ對應52,LQ對應329。
請問2019對應的字符串是什么?
答案:BYQ
(該題我做的時候是直接算了2019/26=77,AZ是52,所以BY對應77,2019%26=17,Q為17,所以答案為BYQ)
但該題考查的是26進制,代碼如下
#include<iostream> #include<cstdio> using namespace std; int main(){ int x = 2019; while(x){ printf("%c", char(x%26+64)); x/=26; } return 0; } //結果取反
試題c:數列求值
本題總分:10分
【問題描述】
給定數列1,1,1,3,5,9,17,…,從第4項開始,每項都是前3項的和。求
第20190324項的最后4位數字
答案:4659
#include<iostream> #include<cstdio> using namespace std; int main(){ int a, b, c, d; a = b = c = 1;//前三項 for(int i = 4; i <= 20190324; i++){ d = (a+b+c)%10000;//控制后四位數 a = b; b = c; c = d; } printf("%d\n", d); return 0; }
試題 D:數的分解
本題總分:10分
【問題描述】
把 2019分解成 3個各不相同的正整數之和,並且要求每個正整數都不包
含數字2和4,一共有多少種不同的分解方法?
注意交換 3個整數的順序被視為同一種方法,例如 1000+1001+18和
1001+1000+18被視為同一種。
【問題描述】
把 2019分解成 3個各不相同的正整數之和,並且要求每個正整數都不包
含數字2和4,一共有多少種不同的分解方法?
注意交換 3個整數的順序被視為同一種方法,例如 1000+1001+18和
1001+1000+18被視為同一種。
#include<cstdio> #include<algorithm> #include<iostream> using namespace std; bool check(int x) //判斷是否有2,4 { while(x) { if(x%10==2||x%10==4) return true; x/=10; } return false; } int main() { int cnt=0; for(int i=1;i<=2019;i++) { if(check(i)) continue; for(int j=i+1;j<=2019;j++) { if(check(j)) continue; int k=2019-i-j; if(k<=i||k<=j||check(k))continue; cnt+=1; } } cout<<cnt<<endl; return 0; }
其中i,j,k分別為三個整數,逐個模擬,邊模擬邊判斷是否有數字2和4;
試題 F: 特別數的和
時間限制: 1.0s 內存限制: 256.0MB 本題總分:15 分
【問題描述】
小明對數位中含有 2、0、1、9 的數字很感興趣 (不包括前導 0) ,在 1 到
40 中這樣的數包括 1、2、9、10 至 32、39 和 40,共 28 個,他們的和是 574。
請問,在 1 到 n 中,所有這樣的數的和是多少?
【輸入格式】
輸入一行包含兩個整數 n。
【輸出格式】
輸出一行,包含一個整數,表示滿足條件的數的和。
【樣例輸入】
40
【樣例輸出】
574
【評測用例規模與約定】
對於 20% 的評測用例,1 ≤ n ≤ 10。
對於 50% 的評測用例,1 ≤ n ≤ 100。
對於 80% 的評測用例,1 ≤ n ≤ 1000。
對於所有評測用例,1 ≤ n ≤ 10000。
時間限制: 1.0s 內存限制: 256.0MB 本題總分:15 分
【問題描述】
小明對數位中含有 2、0、1、9 的數字很感興趣 (不包括前導 0) ,在 1 到
40 中這樣的數包括 1、2、9、10 至 32、39 和 40,共 28 個,他們的和是 574。
請問,在 1 到 n 中,所有這樣的數的和是多少?
【輸入格式】
輸入一行包含兩個整數 n。
【輸出格式】
輸出一行,包含一個整數,表示滿足條件的數的和。
【樣例輸入】
40
【樣例輸出】
574
【評測用例規模與約定】
對於 20% 的評測用例,1 ≤ n ≤ 10。
對於 50% 的評測用例,1 ≤ n ≤ 100。
對於 80% 的評測用例,1 ≤ n ≤ 1000。
對於所有評測用例,1 ≤ n ≤ 10000。
#include<cstdio> #include<algorithm> #include<iostream> using namespace std; int main() { int n,sum=0; cin>>n; for(int i=1;i<=n;i++) { if(i%10==1||i/10==1||i%10==2||i/10==2||i%10==9||i/10==9||i%10==0) sum+=i; } cout<<sum<<endl; }
試題 H: 等差數列
時間限制: 1.0s 內存限制: 256.0MB 本題總分:20 分
【問題描述】
數學老師給小明出了一道等差數列求和的題目。但是粗心的小明忘記了一
部分的數列,只記得其中 N 個整數。
現在給出這 N 個整數,小明想知道包含這 N 個整數的最短的等差數列有
幾項?
【輸入格式】
輸入的第一行包含一個整數 N。
第二行包含 N 個整數 A 1 ,A 2 ,··· ,A N 。(注意 A 1 ∼ A N 並不一定是按等差數
列中的順序給出)
【輸出格式】
輸出一個整數表示答案。
【樣例輸入】
5
2 6 4 10 20
【樣例輸出】
10
【樣例說明】
包含 2、6、4、10、20 的最短的等差數列是 2、4、6、8、10、12、14、16、
18、20。
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int maxn = 1e5+10; int w[maxn]; int ans[maxn]; int main(){ int n; scanf("%d", &n); for(int i = 1; i <= n; i++){ scanf("%d", &w[i]); } if(w[1]==w[2]) //常數列的情況 { printf("%d", n); return 0; } sort(w+1, w+n+1);//先排序,從小到大 for(int i = 1; i < n; i++){ ans[i] = w[i+1]-w[i]; //依次算出兩數之差 } int G = ans[1]; for(int i = 2; i <= n-1; i++){ G = gcd(G, ans[i]); } printf("%d\n", (w[n]-w[1])/G+1); return 0; }
emmmmm。。。。。。就先寫這幾道題吧,畢竟還是小菜一只,等我弄懂其他的再補吧。
總之這次比賽很粗心,水題都沒做對更別說其他的了,不過我會努力的。