zoukankan      html  css  js  c++  java
  • 【t090】吉祥数

    Time Limit: 1 second
    Memory Limit: 128 MB

    【问题描述】

    为了迎接圣诞,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:猜数。老师给
    每位同学发一张卡片,每张卡片上都有一个编号(此编号为非负数,且小于255),每个编号互不相同。老师制定了以下的游戏规
    则:第一轮,每位同学将自己卡片上编号的各位数字进行平方后再相加得到一组新数,编号在这组新数中出现的同学淘汰出局
    ,第二轮,余下的同学再将编号的各位数字进行立方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,第三轮,
    余下的同学再将编号的各位数字进行4次方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,……,以此类推,经
    过n轮后,仍留下来的同学,将获得圣诞特别礼物,卡片上的数即为2007年吉祥数。(假定班级人数不超过200人)
    【输入格式】

    输入文件ghillie .in 有两行,第1行为1个正整数n(n<8),表示有n轮游戏,第二行是卡片上互不相同的编号。
    输出:剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。

    【输出格式】

    输出文件ghillie .out是1行,为剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。

    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

    【题解】

    单独写个函数计算某个数字在第x回合各个位上的数字的x+1方和;
    然后就模拟呗;
    平台日常卖萌:
    如果回合数小于3.最后的数字末尾有多余的空格;
    回合数大于等于3,最后的数字末尾没有多余的空格。

    【完整代码】

    #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 second
    
    typedef 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()
    {
        //freopen("F:\rush.txt","r",stdin);
        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("");
                }
            else
                printf(" ");
        }
        return 0;
    }
  • 相关阅读:
    JavaScript基础
    CSS——网页的布局方式
    CSS——选择器及三大特性
    CSS——常用属性
    Redis——Redis持久化机制、Jedis的使用、Jedis连接池
    Redis——NOSQL、Redis概述、Redis数据类型、通用命令
    JDBC——使用JDBC事务分层完成转账案例
    JDBC——JDBC中的事务、DBUtils使用事务
    Dao组件
    集合的介绍(完全版)
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626903.html
Copyright © 2011-2022 走看看