• 小国的游戏


    可怜的小国和小辉在双十一过后,吃饭都吃不起了,只能在吃饭时间玩会游戏来打发时间。可是时间久了之后,他们各种游戏都玩了一遍,所以他们两个打算合作出一个新奇的游戏。最终,他们决定先做四个纸箱,每个纸箱里面放1000张卡片,每张卡片上写一个数字。

    小国从不同的两个纸箱里抽两张卡片,卡片上的数字是ab,小辉从另外两个不同的纸箱里抽两张卡片,卡片上的数字是cd。然后两个人分别用特定的计算方法计算一个结果。计算方法是小国计算a^b的值,然后将该值的各位数字的和计算出来,小辉计算c^d的值,然后将该值的各位数字的和计算出来,如果他们各自得到的和不是一位数,那么继续分别计算各自的各个位数的和。最后小国将他计算出来的数字扩大2017倍,然后用新得到值的素因子和作为分子,小辉将他计算出来的数字扩大1203倍,然后用新得到的值的素因子和作为分母,得出一个分数,并且将这个分数化简为最简分数。

    可是小辉和小国的数学都很差,想请热爱编程的你帮忙计算这个最简分数。

    Input

    输入T(1<=T<=50),表示有T组输入

    接下来T行数据,每行有四个整数abcd(0<abcd<=1000)

    Output

    每行输出一个答案,答案用最简分数表示。

    Sample Input

    2
    5 2 2 6
    2 9 3 6

    Sample Output

    506/101
    2019/404

    理解同余定理很重要!!!

    代码:

    #include<bits/stdc++.h>
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    using namespace std;
    int div1[10]={0,0,2,3,2,5,5,7,2,3};
    int div2[10]={0,0,2,0,2,5,2,7,2,0};
    int fast_power(int x,int y)
    {
        int ans;
        ans=1;
        x %= 9;
        while(y)
        {
            if(y&1)
            {
                ans = ans*x%9;
            }
            x = x*x%9;
            y = y >> 1;
        }
        return  ans%9==0?9:ans;
    }
    
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int a,b,c,d,t1,t2,gcd;
            scanf("%d%d%d%d",&a,&b,&c,&d);
            t1 = 2017 + div1[fast_power(a,b)];
            t2 = 404 + div2[fast_power(c,d)];
            gcd=__gcd(t1,t2);
            printf("%d/%d
    ",t1/gcd,t2/gcd);
        }
        return 0;
    }

                                                                                   (注:借鉴于某大佬的代码,借此向大佬学习学习。)



  • 相关阅读:
    gitlab CI
    arm模拟环境qemustatic
    golang 离线使用模块
    企业微信机器人推送消息
    贴片丝印对照
    Air32F103CBT6
    RTT F411CE
    STM32F411CEU6
    CMakeLists.txt使用
    websocket测试(nodered)
  • 原文地址:https://www.cnblogs.com/coder-tcm/p/8782202.html
Copyright © 2020-2023  润新知