生活随笔
收集整理的這篇文章主要介紹了
【t090】吉祥数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Time Limit: 1 second
Memory Limit: 128 MB
【問題描述】
為了迎接圣誕,信息學(xué)興趣小組的同學(xué)在輔導(dǎo)老師的帶領(lǐng)下,舉辦了一個(gè)盛大的晚會(huì),晚會(huì)的第一項(xiàng)內(nèi)容是做游戲:猜數(shù)。老師給
每位同學(xué)發(fā)一張卡片,每張卡片上都有一個(gè)編號(hào)(此編號(hào)為非負(fù)數(shù),且小于255),每個(gè)編號(hào)互不相同。老師制定了以下的游戲規(guī)
則:第一輪,每位同學(xué)將自己卡片上編號(hào)的各位數(shù)字進(jìn)行平方后再相加得到一組新數(shù),編號(hào)在這組新數(shù)中出現(xiàn)的同學(xué)淘汰出局
,第二輪,余下的同學(xué)再將編號(hào)的各位數(shù)字進(jìn)行立方相加得到一組新數(shù),編號(hào)在這組新數(shù)中出現(xiàn)的同學(xué)再淘汰出局,第三輪,
余下的同學(xué)再將編號(hào)的各位數(shù)字進(jìn)行4次方相加得到一組新數(shù),編號(hào)在這組新數(shù)中出現(xiàn)的同學(xué)再淘汰出局,……,以此類推,經(jīng)
過n輪后,仍留下來的同學(xué),將獲得圣誕特別禮物,卡片上的數(shù)即為2007年吉祥數(shù)。(假定班級(jí)人數(shù)不超過200人)
【輸入格式】
輸入文件ghillie .in 有兩行,第1行為1個(gè)正整數(shù)n(n<8),表示有n輪游戲,第二行是卡片上互不相同的編號(hào)。
輸出:剩下來的各個(gè)吉祥數(shù),按從小到大順序輸出,每兩個(gè)數(shù)之間有一個(gè)空格。
【輸出格式】
輸出文件ghillie .out是1行,為剩下來的各個(gè)吉祥數(shù),按從小到大順序輸出,每兩個(gè)數(shù)之間有一個(gè)空格。
Sample Input
1
24 123 2 12 20 14 4 6 36 72
Sample Output
2 6 12 24 72 123
【題目鏈接】:http://noi.qz5z.com/viewtask.asp?id=t090
【題解】
單獨(dú)寫個(gè)函數(shù)計(jì)算某個(gè)數(shù)字在第x回合各個(gè)位上的數(shù)字的x+1方和;
然后就模擬唄;
平臺(tái)日常賣萌:
如果回合數(shù)小于3.最后的數(shù)字末尾有多余的空格;
回合數(shù)大于等于3,最后的數(shù)字末尾沒有多余的空格。
【完整代碼】
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <set>
#include <map>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
#include <stack>
#include <string>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se secondtypedef pair<
int,
int> pii;
typedef pair<LL,LL> pll;
void rel(LL &r)
{r =
0;
char t = getchar();
while (!
isdigit(t) && t!=
'-') t = getchar();LL sign =
1;
if (t ==
'-')sign = -
1;
while (!
isdigit(t)) t = getchar();
while (
isdigit(t)) r = r *
10 + t -
'0', t = getchar();r = r*sign;
}
void rei(
int &r)
{r =
0;
char t = getchar();
while (!
isdigit(t)&&t!=
'-') t = getchar();
int sign =
1;
if (t ==
'-')sign = -
1;
while (!
isdigit(t)) t = getchar();
while (
isdigit(t)) r = r *
10 + t -
'0', t = getchar();r = r*sign;
}
const int MAXN =
200+
100;
const int dx[
9] = {
0,
1,-
1,
0,
0,-
1,-
1,
1,
1};
const int dy[
9] = {
0,
0,
0,-
1,
1,-
1,
1,-
1,
1};
const double pi =
acos(-
1.0);
int T;
LL a[MAXN];
int n =
0;
vector <LL> b;
bool bo[MAXN];LL f(LL x,
int round)
{LL temp =
0;
while (x>
0){
int t = x%
10;LL dd =
1;rep1(i,
1,round+
1)dd=dd*t;temp+=dd;x/=
10;}
return temp;
}
int main()
{
memset(bo,
true,
sizeof(bo));rei(T);LL x;
while (
scanf(
"%I64d",&x)!=EOF)a[++n] = x;rep1(ii,
1,T){b.clear();rep1(i,
1,n)
if (bo[i])b.pb(f(a[i],ii));
int len = b.size();rep1(i,
1,n)
if (bo[i]){rep1(j,
0,len-
1)
if (b[j]==a[i]){bo[i]=
false;
break;}}}b.clear();rep1(i,
1,n)
if (bo[i])b.pb(a[i]);sort(b.begin(),b.end());
int len = b.size();rep1(i,
0,len-
1){
printf(
"%I64d",b[i]);
if (i==len-
1){
if (T<
3)
putchar(
' ');
puts(
"");}
elseprintf(
" ");}
return 0;
}
轉(zhuǎn)載于:https://www.cnblogs.com/AWCXV/p/7626903.html
總結(jié)
以上是生活随笔為你收集整理的【t090】吉祥数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。