1.最大值
題目描述
給定n個數,{x1,x2,…,xn}要求從中選出至少乙個數,至多n個數,使得乘積之和最大。
輸入
第一行整數n,表示有多少個數
接下來n行,每行乙個整數xi,-10 ≤xi≤ 10
輸出
輸出一行,表示最大乘積
樣例輸入
sample input1:3-1
2-4sample input2:33
2-4樣例輸出
sample output1:
8sample output2:
6資料範圍限制
對於70%的資料:1 ≤ n ≤ 9
對於100%的資料: 1 ≤ n ≤ 18,-10 ≤xi≤ 10
正解
找出負數,然後,如果負數個數為雙,就全部相乘;如果負數個數為單,就除去最大的負數,其他再相乘。記住不能乘0
ac**
#include
#include
using
namespace std;
int n,m,o,a,b[20]
;long
long s;
intmain()
//大於0的情況
if(a<0)
//小於0的情況}if
(o%2==0
||o==
1)m=1;
for(
int i=
1;i<=o;i++
)//乘負數
if(b[i]
!=m)
else m=1;
cout
}
2.火柴
題目描述
給定乙個n位的數,將火柴棍重新排列後,能得到的最大的數是多少?
注意不能多出或者少一位, 火柴棍要全部用上.
輸入
第一行整數t,表示資料組數
接下來t行,每行乙個整數n, 然後是n位數,表示原來的數,可能會有前導0,中間用空格隔開。
輸出
對於每組資料,輸出一行,最大的能得到的數是多少。
樣例輸入3
1 33 512
3 079
樣例輸出5
977997
資料範圍限制
對於20%的資料:1 ≤ n ≤ 10
對於60%的資料:1 ≤ n ≤ 1000
對於100%的資料: 1 ≤ n ≤ 100000,1 ≤t≤ 10
正解
暴力,先將全部變成1,然後進行模擬
ac**
#include
#include
#include
using
namespace std;
int a[10]
=;//每個數字所需的火柴
int b[10]
=;//變成1可以獲得的火柴
int n,t,o,x;
char ch[
100005];
intmain()
for(
int j=
1;j<=t;j++
)//判斷,因為火柴不能多也不能少
}
cout
}
3.遊戲
題目描述
guyu guo和tube lu正在玩乙個遊戲:lu默想乙個1和n 之間的數x,然後guo嘗試猜出這個數。
guo能提出m個這樣的問題: 「未知數是否能被yi整除?」
遊戲按照如下流程進行:guo先給出他想問的全部m個問題,然後lu對所有問題依次以「是」或「否」作答。得到m個問題的答案之後,guo就要給出他的猜測。
guo寫了乙個程式幫他以最優的方式提出這m個問題,現在他想知道在保證得到乙個確定的答案下,最少可以問多少個問題,即m的最小值。但是guo正忙於吃漂亮學姐送他的糖果而無暇改**(送糖果的學姐十分多,以至於有許多糖果快要過期了),所以他找到了你,希望你來幫他解決這個問題。
輸入
一行,乙個整數n
輸出
一行,乙個整數m
樣例輸入
【樣例輸入1】
4【樣例輸入2】
8樣例輸出
【樣例輸出1】
3【樣例輸出2】
6樣例1解釋:
guo依次提問能否被2,3,4整除,就可以得到確定答案。
比如lu回答能被2,4整除,不能被3整除,則確定答案為4
樣例2解釋:
guo依次提問能否被2,3,4,5,7,8整除,總共需要6次。
資料範圍限制
對於20%的資料:1 ≤ n ≤ 20
對於60%的資料:1 ≤ n ≤ 1000
對於100%的資料: 1 ≤ n ≤ 100000
正解
每個小於n的質數往外擴充套件它們的倍數,擴充套件的要小於n,擴充套件的個數和小於n的質數的個數的和,就是答案
ac**
#include
#include
using
namespace std;
int n,s,a[
100005];
intmain()
4.hack比賽
題目描述
codefires round馬上就要結束了!zcc已經通過做題得到了c分。但他驚訝地發現,房間裡的其他選手也都解決了最難的題。zcc根據經驗斷定大多數的選手都會fst的!當然,除去rating最高的選手memset137。在此之前,zcc想要hack他們來使他的得分更高。除了zcc,房間裡有n個選手,他們已經被按照rating從小到大排序了(所以memset137是排在第n個的選手)。當zcc成功hack了第i個選手時,他會獲得i分的收入。你可以假設zcc hack技術高超,百發百中,可以hack除了memset137和自己以外的所有選手,而且在此期間沒有其他選手干擾。
由於zcc有著謙虛的美德,他不想讓自己的得分太高。zcc想要知道,存在著多少種不同的選擇一些人hack的方案,使得他的得分在l和r(c≤l≤r輸入
一行,四個整數n,c,l,r分別表示n個選手,當前分數為c,希望得分在l到r之間
輸出
輸出一行,方案數
樣例輸入
sample input1:
3 0 1 2
sample input2:
5 13 14 17
sample input3:
100 0 23 59
樣例輸出
sample output1:
2sample output2:
6sample output3:
90567
資料範圍限制
對於20%的資料: 1≤n≤50;
對於50%的資料: 1≤n≤2000;
對於100%的資料: 1≤n≤100000, 1≤c≤1000000,c≤l≤rac**
#include
#include
#include
using
namespace std;
int a[2]
[100005
],n,c,l,r,s,m;
intmain()
memset
(a[(i-1)
&1],
0,sizeof
(a[(i-1)
%1])
);//清零
} cout
}
1.
開始90分,後來發現n==1時,直接輸出a,就ac了
2.直接ac
3.開始找錯規律,10分,講解過後,改完ac
4.不會做,講解後,恍然大悟,修改完ac
2020 10 05 普及組 模擬賽C組總結
總結這次考試沒發揮好,第二題沒有拿滿分,下次要繼續努力 t1 superpow 10 題目大意 已知a b 超級冪 代表 b個a的冪,求n對數的超級冪之積的個位數。正確思路 當打表後可以發現 b是沒用的,如果b大於2,b就等於2,答案和原來的是一樣的。所以處理一下跑個快速冪就行了。至於為什麼拿10分...
2020 11 14 普及組 模擬賽C組總結
這是乙個好東西 作者主頁 t1 操作 題目大意 給你乙個數列,讓你執行一些操作後輸出。這一題找規律即可。t2 遊戲 題目大意 判斷每個人被攻擊和攻擊的情況是否符合題目要求。思路 找規律。因為中間不可能出現三個一樣的攻擊操作,所以只需要判斷有沒有大於3的連續操作,直接輸出個數即可。提示 t3 到達 題...
2020 10 17 普及組 模擬賽C組總結
t1 小x的植樹節 10 題目大意 有n nn個小朋友,每個小朋友有一些fri ends friends friend s,讓你隨機選3個小朋友,讓他們要麼全部都是fri ends friends friend s,要麼全都不是。每種選法概率相等,求合法概率保留3位小數。思路 不會,先判斷為0的情況...