• 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;
    }
  • 相关阅读:
    atom 震动特效
    CSRF和XSS
    解决remove @override annotation(jdk1.5和jdk1.6)
    JDK 工具列表
    解决Win10系统backgroundTaskHost占用cpu大
    ideaIU-15.0.2 注册码
    jprofiler_windows-x64_9_1注册码
    修改ligerui 默认确认按钮
    解决 在POM配置Maven plugin提示错误“Plugin execution not covered by lifecycle configuration”
    安装 Flex2packagebeta_1.994
  • 原文地址:https://www.cnblogs.com/JinxiSui/p/9740613.html
Copyright © 2020-2023  润新知