zoj 1489 2^x mod n = 1

    技术2022-05-20  48

    我要去死了。。。A了之后,发现我的题目数没增加。。。发现,这题我以前A过。。。啊啊啊啊啊 。。。。

     

    给你n求最小的x使之满足这个式子。

     

    用笔模拟了下,发现偶数和1(x不能为0呀,如果为0那所有结果都可以为0.。。)可以排除在外了。。。至于奇数是不是一定有解呢??

     

    问党姐姐。。。数论女神。。恩。。。他说奇数一定有解。。因为互质保证2有逆元。。2*2的逆元结果就是1(所谓的幺元)神马神马的。。。

     

    表示看不懂。。恩。。

     

    中间需要 %= 因为直接*2会溢出滴。。。根据 (x*y) % n == (x%n) * (y%n)%n

     

    最喜欢数论题目的长度啦~~

     

     

    #include <queue> #include <stack> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <limits.h> #include <string.h> #include <algorithm> using namespace std; int main() { int n,i; while( ~scanf("%d",&n) ) { if( n < 3 || n % 2 == 0 ) { printf("2^? mod %d = 1/n",n); continue; } int p = 1; for(i=1; ; i++) { p *= 2; if( p % n == 1 ) { printf("2^%d mod %d = 1/n",i,n); break; } else p %= n; } } return 0; }  


    最新回复(0)