--------------cadifobp0802
給定一個(gè)整數(shù) n,若 n 是一個(gè)偶數(shù),輸出 even,若 n 是一個(gè)奇數(shù),輸出 odd。
輸入格式單個(gè)整數(shù):表示 n。
輸出格式單個(gè)字符串:表示 n 的奇偶性
數(shù)據(jù)范圍?1,000,000≤n≤1,000,000
樣例數(shù)據(jù) 輸入:0
輸出:
even
輸入:-1
輸出:odd
我的想法簡(jiǎn)單的奇偶數(shù)判斷,過(guò)
#includeusing namespace std;
int n;
int main(){scanf("%d", &n);
if (n % 2 == 0)
printf("even\n");
else
printf("odd\n");
return 0;
}
搭積木
題目描述小愛(ài)用積木搭起一座金字塔。為了結(jié)構(gòu)穩(wěn)定,金字塔的每一層要比上一層多一塊積木。規(guī)則如下:
第 1 層需要放 1 塊積木
第 2 層需要放 2 塊積木
第 3 層需要放 3 塊積木
第 i 層需要放 i 塊積木
給定積木的數(shù)量 n,請(qǐng)問(wèn)最高可以搭出多少層的金字塔?
單個(gè)整數(shù)表示 n
輸出格式單個(gè)整數(shù)表示金字塔的最高高度。
數(shù)據(jù)范圍對(duì)于 50% 的數(shù)據(jù),1≤n≤1,000
對(duì)于 100% 的數(shù)據(jù),1≤n≤1,000,000,000
12
輸出:4
說(shuō)明:4層金字塔需要1+2+3+4=10塊積木,而5層金字塔需要1+2+3+4+5=15塊積木,在12塊積木的情況下,最多搭4層金字塔
我的想法用高斯公式循環(huán)求和(或者直接累加),大于所給積木就輸出。
代碼如下:
#includeusing namespace std;
int n;
int main(){scanf("%d", &n);
for (int i = 1; i<= n; ++i) {if (i * (i + 1) / 2 >n) { printf("%d\n", i - 1);
break;
}
}
return 0;
}
最長(zhǎng)平臺(tái)
題目描述給定一個(gè)整數(shù)數(shù)列 a1,a2,…,an
?,請(qǐng)找出最長(zhǎng)平臺(tái),并輸出最長(zhǎng)平臺(tái)的數(shù)量(數(shù)字相等但位置不同的平臺(tái)算作不同的平臺(tái))。
所謂平臺(tái),就是指數(shù)列中一段連續(xù)的、完全相等的數(shù)字,單個(gè)數(shù)字可以成為一個(gè)平臺(tái)。
第一行:?jiǎn)蝹€(gè)整數(shù) n
第二行:n 個(gè)整數(shù) a1,a2,…,an
兩個(gè)整數(shù):表示最長(zhǎng)平臺(tái)的長(zhǎng)度與最長(zhǎng)平臺(tái)的數(shù)量
數(shù)據(jù)范圍對(duì)于 50% 的數(shù)據(jù),n≤1000
對(duì)于 100% 的數(shù)據(jù),n≤500,000
1≤ai≤1,000,000
7
2 2 2 1 3 3 3
輸出:3 2
說(shuō)明:
最長(zhǎng)平臺(tái)為2 2 2或3 3 3
5
3 1 4 1 5
輸出:1 5
說(shuō)明:
每個(gè)數(shù)字單獨(dú)成一個(gè)平臺(tái)
從頭開(kāi)始找,每一段平臺(tái)到頭了就比較是否比之前的大平臺(tái)大。如果大于的話,重新開(kāi)始統(tǒng)計(jì),如果等于的話,統(tǒng)計(jì)+1,否則不統(tǒng)計(jì)。
代碼如下:
#includeusing namespace std;
#define MAXN 500010
int n, a[MAXN], s, ans = 0, cnt = 0;
int main(){scanf("%d", &n);
for (int i = 1; i<= n; ++i)
scanf("%d", &a[i]);
int t = a[1];
s = 1;
a[n + 1] = a[n] - 1;//為了最后一次判斷特地增加一個(gè)最少的
for (int i = 2; i<= n + 1; ++i) {if (a[i] != t) { if (s >ans) { ans = s;
cnt = 1;
}
else if (s == ans)
cnt++;
t = a[i];
s = 1;
}
else
s++;
}
printf("%d %d\n", ans, cnt);
return 0;
}
積木染色
題目描述有 n 塊積木排成一排,小愛(ài)需要給每塊積木染色,顏色有 m 種,請(qǐng)問(wèn)有多少種方法,能使相鄰兩塊積木的顏色均不相同?
輸入格式輸入兩個(gè)正整數(shù)n,m
輸出格式輸出滿足條件的方案數(shù)模109+7的結(jié)果
數(shù)據(jù)范圍對(duì)于 30% 的數(shù)據(jù),1≤n,m≤10
對(duì)于 60% 的數(shù)據(jù),1≤n,m≤104
對(duì)于 100% 的數(shù)據(jù),1≤n≤1015,1≤m≤109
3 2
輸出:2
說(shuō)明:
合法的染色方案有:{1,2,1} {2,1,2}
這道題看上去難度不大,第一個(gè)積木有m種選擇,之后每一種都是m-1次選擇。
但是數(shù)據(jù)量非常大,n大能到10的15次方。我便采取一種硬核的遍歷方式:
如果n<=107,直接循環(huán);
如果n>107,先循環(huán)到107,然后拿107,開(kāi)方,最后解決一些零頭。
代碼如下:
#includeusing namespace std;
#define ll long long
#define MODD 1000000007
ll n, m;
int main(){scanf("%lld%lld", &n, &m);
ll k = m;
m -= 1;
n -= 1;
ll mm = m;
if (n< 1e7) {for (ll i = 2; i<= n; ++i) { mm *= m;
mm %= MODD;
}
k *= mm;
k %= MODD;
}
else {for (ll i = 2; i<= 1e7; ++i) { mm *= m;
mm %= MODD;
}
ll z7 = n / 1e7, lt = n - z7 * 1e7, mmm = mm;
for (ll i = 2; i<= z7; ++i) { mmm *= mm;
mmm %= MODD;
}
for (int i = 1; i<= lt; ++i) { mmm *= m;
mmm %= MODD;
}
k *= mmm;
k %= MODD;
}
printf("%lld\n", k);
return 0;
}
出棧序列
題目描述給定一個(gè)長(zhǎng)度為n的、僅由小寫字母組成的字符串,將其按序依次放入棧中。
請(qǐng)問(wèn)在所有可能的出棧序列中,字典序最小的出棧序列是多少?
輸入格式輸入第一行, 一個(gè)正整數(shù)n
輸入第二行,一個(gè)長(zhǎng)度為n的字符串
輸出所有出棧序列中,字典序最小的出棧序列
數(shù)據(jù)范圍對(duì)于30%的數(shù)據(jù),1≤n≤10
對(duì)于60%的數(shù)據(jù),1≤n≤103
對(duì)于100%的數(shù)據(jù),1≤n≤105
3
yes
輸出:esy
說(shuō)明:
字符y、e、s依次進(jìn)棧,所有出棧的可能性有:
{yes}、{yse}、{eys}、{esy}、{sey}
其中 {esy} 的字典序最小
這道題我用數(shù)組模擬鏈表來(lái)做。首先找到一個(gè)字典序最小的,排在前的優(yōu)先。找到后再拿這個(gè)字母前一個(gè)和后面所有進(jìn)行比較,優(yōu)先輸出靠前的。
代碼如下:
#includeusing namespace std;
#define MAXN 100010
struct nod{int next, last;
char c;
};
int n, id;
char op;
nod ca[MAXN];
void dfs(int w, int el) {cout<< ca[w].c;
ca[ca[w].last].next = ca[w].next;
ca[ca[w].next].last = ca[w].last;
if (el == 0)
return;
int wl = ca[w].last;
if (wl< 1)
wl = ca[w].next;
int p = ca[wl].next;
while (p<= n) {if (ca[p].c< ca[wl].c) { wl = p;
}
p = ca[p].next;
}
dfs(wl, el - 1);
}
int main(){cin >>n;
for (int i = 1; i<= n; ++i) {cin >>ca[i].c;
ca[i].last = i - 1;
ca[i].next = i + 1;
if (i == 1) { op = ca[i].c;
id = 1;
}
if (op >ca[i].c) { op = ca[i].c;
id = i;
}
}
dfs(id, n - 1);
cout<< endl;
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
新聞名稱:上海月賽11月丙組解題報(bào)告-創(chuàng)新互聯(lián)
文章出自:http://jinyejixie.com/article4/hidoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站策劃、網(wǎng)站收錄、網(wǎng)站制作、商城網(wǎng)站、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容