1095 火星人
1095 火星人
2004年NOIP全國聯(lián)賽普及組
時間限制: 1 s 空間限制: 128000 KB 題目等級 : 黃金 Gold 題目描述 Description?人類終于登上了火星的土地并且見到了神秘的火星人。人類和火星人都無法理解對方的語言,但是我們的科學(xué)家發(fā)明了一種用數(shù)字交流的方法。這種交流方法是這樣的,首先,火星人把一個非常大的數(shù)字告訴人類科學(xué)家,科學(xué)家破解這個數(shù)字的含義后,再把一個很小的數(shù)字加到這個大數(shù)上面,把結(jié)果告訴火星人,作為人類的回答。
火星人用一種非常簡單的方式來表示數(shù)字——掰手指?;鹦侨酥挥幸恢皇?#xff0c;但這只手上有成千上萬的手指,這些手指排成一列,分別編號為1,2,3……?;鹦侨说娜我鈨筛种付寄茈S意交換位置,他們就是通過這方法計(jì)數(shù)的。
一個火星人用一個人類的手演示了如何用手指計(jì)數(shù)。如果把五根手指——拇指、食指、中指、無名指和小指分別編號為1,2,3,4和5,當(dāng)它們按正常順序排列時,形成了5位數(shù)12345,當(dāng)你交換無名指和小指的位置時,會形成5位數(shù)12354,當(dāng)你把五個手指的順序完全顛倒時,會形成54321,在所有能夠形成的120個5位數(shù)中,12345最小,它表示1;12354第二小,它表示2;54321最大,它表示120。下表展示了只有3根手指時能夠形成的6個3位數(shù)和它們代表的數(shù)字:
三進(jìn)制數(shù)
123
132
213
231
312
321
?
代表的數(shù)字
1
2
3
4
5
6
現(xiàn)在你有幸成為了第一個和火星人交流的地球人。一個火星人會讓你看他的手指,科學(xué)家會告訴你要加上去的很小的數(shù)。你的任務(wù)是,把火星人用手指表示的數(shù)與科學(xué)家告訴你的數(shù)相加,并根據(jù)相加的結(jié)果改變火星人手指的排列順序。輸入數(shù)據(jù)保證這個結(jié)果不會超出火星人手指能表示的范圍。
輸入描述 Input Description輸入包括三行,第一行有一個正整數(shù)N,表示火星人手指的數(shù)目(1 <= N <= 10000)。第二行是一個正整數(shù)M,表示要加上去的小整數(shù)(1 <= M <= 100)。下一行是1到N這N個整數(shù)的一個排列,用空格隔開,表示火星人手指的排列順序。
輸出描述 Output Description輸出只有一行,這一行含有N個整數(shù),表示改變后的火星人手指的排列順序。每兩個相鄰的數(shù)中間用一個空格分開,不能有多余的空格。
樣例輸入 Sample Input5
3
1 2 3 4 5
樣例輸出 Sample Output1 2 4 5 3
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int n,m; 5 int a[10010]; 6 int main(){ 7 scanf("%d%d",&n,&m); 8 for (int i=0;i<n;i++) scanf("%d",&a[i]); 9 for (int i=0;i<m;i++) next_permutation(a,a+n); 10 for (int i=0;i<n;i++) printf("%d ",a[i]); 11 }?
轉(zhuǎn)載于:https://www.cnblogs.com/zwfymqz/p/6666135.html
總結(jié)
- 上一篇: argument--学习笔记
- 下一篇: 蓝桥杯-打印十字图-java