zoukankan      html  css  js  c++  java
  • UVa 12169

    题意

    (题干摘自紫书)

    有个裁判出的题太难,总是没人做,所以他很不爽。有一次他终于忍不住了,心想:“反正我的题没人做,我干嘛要费那么多心思出题?不如就输入一个随机数,输出一个随机数吧。”于是他找了3个整数x1、a和b,然后按照递推公式xi=(axi-1+b) mod 10001计算出了一个长度为2T的数列,其中T是测试数据的组数。然后,他把T和x1, x3,…, x2T-1写到输入文件中,x2,x4,…, x2T写到了输出文件中。你的任务就是解决这个疯狂的题目:输入T, x1, x3,…, x2T-1,输出x2, x4,…, x2T。输入保证T≤100,且输入的所有x值为0~10000的整数。如果有多种可能的输出,任意输出一个即可。

    思路

    看这题正解应该是exgcd
    但暴力枚举ab也能水过去
    跑出来330ms

    AC代码

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    int x[250], xx[250];
    
    int main()
    {
        int T, a, b, i;
        scanf("%d",&T);
        bool ok = false;
        for( i = 1; i < 2*T; i += 2 )
            scanf("%d",&xx[i]);
        for( a = 0; a <= 10000; a++ ){
            for( b = 0; b <= 10000; b++ ){
                x[1] = xx[1];
                x[2] = (a*xx[1]+b) % 10001;
                for( i = 3; i <= 2*T; i++ ){
                    int m = (a*x[i-1]+b) % 10001;
                    if( xx[i] != 0 && xx[i] != m )    break;
                    x[i] = m;
                    if( i == 2*T ) {
                        ok = true;
                        break;
                    }
                }
                if( ok )    break;
            }
            if( ok )    break;
        }
        for( i = 2; i <= 2*T; i += 2 )
            printf("%d
    ",x[i]);
        return 0;
    }
  • 相关阅读:
    分清函数指针和指针函数_
    常量指针与指针常量的区别
    Oracle11g数据库在Win系统下的安装
    MySQL-python模块
    堡垒机(paramiko)
    paramiko模块
    线程池
    线程、进程和协程
    Twisted
    SocketServer模块
  • 原文地址:https://www.cnblogs.com/JinxiSui/p/9740613.html
Copyright © 2011-2022 走看看