2020 2 5普及C組模擬賽3

2021-10-03 04:59:53 字數 4468 閱讀 9513

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的情況...