D. Game with modulo 交互题(取余(膜)性质) 题意 猜一个点\(a\)可以向机器提问 点对\((x,y)\) 如果\(x\mod(a)>=y\mod(a)\)回答\(x\) 反之回答\(y\) 询问不能超过60下,请你猜出a 思路 \(a\mod(b)<a/2(a>=b)\) 形式化的证明: a的二进制形式是1xxxxxx b的二进制形式是0001xxx \(a=b*k+x\) 设a和b最高位二进制的位数差为\(z\) \(k=1<<(z-1)\) 这时…
先二分一个区间,再在区间里面二分即可: 可以仔细想想,想明白很有意思的: #include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> #include<cstring> #include<string> #include<cmath> #include<map> #include<set> #include<…
D. Game with modulo 题目链接:https://codeforces.com/contest/1104/problem/D 题意: 这题是一个交互题,首先一开始会有一个数a,你最终的目的是要将它猜出来. 每次询问会输出"? x y",然后有: "x" (without quotes), if (x % a)≥(y % a). "y" (without quotes), if (x % a)<(y % a). 最多给你60次…
交互题就是程序与电脑代码的交互. 比如没有主函数的程序,而spj则给你一段主函,就变成了一个整体函数. 还有一种就是程序和spj之间有互动,这个用到fflush(stdout);这个函数就可以实现交互了 fflush(stdin) 作用:清理标准输入流,把多余的未被保存的数据丢掉 fflush(stdout) 作用:清空输出缓冲区,并把缓冲区内容输出 CF1103B Game with modulo 题意:有一个需要你猜的数a,你每次可以猜两个数,如果x%a>=y%a,则返回x,否则返回y.你最…
题目链接 题意:K是由两个素数乘积,如果最小的素数小于L,输出BAD最小的素数,否则输出GOOD 分析 素数打表将 L 大点的素数打出来,一定要比L大,然后就开始枚举,只需K对 素数 取余 看看是否为零,但是 k 是一个很大的数,怎么存储又是一个问题,很好的一个解决方案:用千进制来表示 :加入是 1234567890 表示成 [890][567][234][1]这样存储,如果是十进制对 k 取余,那么就是 从最高位开始 加上 上步*10再取余,放在这里就是*1000 #include <iost…
//函数fun功能:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中.高位仍在高位,低位仍在低位. //重难点:思路:因为不是字符串,所以可以把问题变成整数的操作,采用取余和除的操作.对整数进行取余和除以操作. #include <stdio.h> void fun (long s, long *t) { int d; ; *t = ; )//思路因为不是字符串,所以可以把问题变成整数的操作,采用取余和除的操作. { d = s%;//取余操作,取最后一位数字. /********…
//给定程序中fun函数的功能是:从低位开始取出长整形变量s中奇数位上的数,依次构成一个新的数放在t中.高位仍在高位,低位仍在低位.例如:当s中的数为7654321时,t中的数为7531. //重难点:函数传递的形参和实参类型要一致.对整型变量进行取余操作可以取得各个位上的值. #include <stdio.h> /************found************/ void fun (long s, long *t)//思路为对整型变量进行取余操作可以取得各个位上的值. { ;…
我是题目 快速幂就是快速求 \(a^b\)的一种算法 快速幂 思想 : 比如我要求 \(6^9\) 首先将幂转化为二进制形式 : \[6^9 = 6^{1001} \tag{1} \] 可以得到 : \[6^9 = 6^{2^{3}} \times 6^{2^0} \tag{2} \] 由于一个数变成二进制位数为\(\log _2\boldsymbol{b}\) 位, 故相对于直接求幂 ( b位需要b次计算 ), 时间复杂度减小了 取余 两条基本性质 : \[\left( \boldsymbol…
Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 30529   Accepted: 8033 Description You may have heard that no two snowflakes are alike. Your task is to write a program to determine whether this is really true. Y…
做TopCoder SRM 576 D2 L3 题目时,程序有个地方需要对一个数大量求幂并取余,导致程序运行时间很长,看了Editoral之后,发现一个超级高效的求幂并取余的算法,之前做System test时,程序运行时间(最慢的测试用例)为500ms左右,使用此方法之后,运行时间直接减为20ms,快了20多倍,所以将此方法记录下来. 算法时间复杂度为 log(n). 这个算法其实就是  数据结构与算法分析 (Weiss 著) 一书中开头的那个递归求幂算法的非递归版,简洁明了. 代码如下: /…