poj 3372 完全剩余系

转载 2015年11月19日 23:11:25
题意:老师给N个学生发糖,第x次发糖发给编号为 f(x) 的学生。可以推知:f(x) = x * (x+1) / 2 % N(学生号为 0, 1, 2, 3, ```N-1 )
现在问你是否每个学生都能得到至少一颗糖。

题解:还是不太明白,代码倒是很短,就是判断输入数字n是否为2的幂。

(转自http://blog.csdn.net/weiguang_123/article/details/7686912)要使每个学生都至少得到一颗糖,那么f(x) 应该构成模N的完全剩余系。

那么这个问题的反面就是在什么情况下,f(x) 不能构成模N的完全剩余系。
我们知道若存在 x != y, 使得 f(x) = f(y),那么f(x)边不能构成模N的完全剩余系。
若f(x) = f(y), 推出 x * (x+1) / 2 % N = y * (y+1) / 2 % N, 推出 (x+y+1)(x-y) / 2 = 0 % N
这样可以假设 N^t = (x+y+1)(x-y)/2,于是这个等式成立的条件便是f(x) = f(y)成立的条件。
下面我们具体分析:
首先给出两个显而易见的结论:
(1).任意一个偶数都可以表示成 b * 2^e 的形式(b为奇数)
(2).(x+y+1)与(x-y)中必定一个是偶数一个是奇数

假如 N^t = (x+y+1)(x-y)/2
1.若N是奇数,那么N^t 还是奇数,于是我们一定可以找到适当的x,y,t使得 (x+y+1)(x-y)/2 = N^t,例如令 x = y + 2, 得 y + 3 = N^t,
得 y = N^t - 3。 所以在这种情况下f(x) = f(y),不能构成完全剩余系。
2.若N是2的幂,令N=2^e, 那么N^t = 2^(e*t) 为偶数,而(x+y+1)(x-y)/2是奇数,显然不可能存在x,y,t使得 N^t = (x+y+1)(x-y)/2。所以在这种情况下f(x) != f(y) 可以构成完全剩余系。
3.若N是形如 b * 2^e 的偶数,那么 N^t = b^t * 2^(e*t)。
令(x+y+1) = b^t, (x-y)/2 = 2^(e*t)
即(x+y+1) = b^t //一式
(x-y) = 2^(e*t+1) //二式
解一式二式构成的方程组,得到 2x = 2^(e*t+1) + b^t - 1,左右均为偶数,显然x是有解的,那么y也是有解的。所以在这种情况下f(x) = f(y),不能构成完全剩余系。

注意上面的式子并不是一般的式子,我们只是用它们来判断存在性,由 N^t = (x+y+1)(x-y)/2这一假设引出的,是由结果到原因的推导,并不能随意的求解。例如 2x = 2^(e*t+1) + b^t - 1,假如一边是奇数,一边是偶数,那么x显然是无解的。


#include <cstdio>
int T;
int main(){
 int n;
 while(scanf("%d",&n)!=EOF){
  if(n&(n-1))
   printf("NO\n");
  else
   printf("YES\n");
 }
 return 0;
}


剩余类和完全剩余系(简单理解)

最近刚刚学了剩余类和完全剩余系,进行了简单的总结,如果理解错误,欢迎大牛指出!! 剩余类和完全剩余系: 定义1:取定m>0,任意的r∈Z,设r  mod m ={qm+r|q=0,...
  • Stray_Lambs
  • Stray_Lambs
  • 2016年08月05日 09:37
  • 729

(经典)POJ-3181 完全背包+大数处理

题目大意:给定N,K,用1-K组成N,一共有多少组合方法? 题目链接:点击打开链接 分析: 这题属于完全部分和问题,其实也可以理解为划分数问题。如n为3,k为2时,有 1+2 ...
  • AC_hell
  • AC_hell
  • 2016年05月14日 16:26
  • 356

poj 2229 Sumsets 【完全背包 or 递推】

Sumsets Time Limit: 2000MS   Memory Limit: 200000K Total Submissions: 14968   Accepted: 5978 ...
  • chenzhenyu123456
  • chenzhenyu123456
  • 2015年12月20日 12:03
  • 802

剩余系,剩余定理,同余定理,费马小定理的证明

费马小定理: 证明:假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p) 一、准备知识: 所谓"剩余系",就是指对于某一个特定的正整数n,一个整数集中的数模n所得的余数域。如...
  • acm_1361677193
  • acm_1361677193
  • 2015年08月09日 16:25
  • 986

POJ - 3260 完全背包和多重背包

题意:农夫约翰要购买价格为T的物品,他有N种硬币,每种硬币的面额为Vi,数量为Ci,同时店主也只有这几种面额的硬币,但数量无限,问约翰总共要经手的硬币数量(约翰买东西给店主的硬币数量+店主找钱给约翰的...
  • qq_36542637
  • qq_36542637
  • 2017年08月09日 11:30
  • 65

poj1006 生理周期(中国剩余定理)

生理周期 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 122157   Accepted: 38518 ...
  • d_x_d
  • d_x_d
  • 2015年09月15日 14:37
  • 1627

POJ 1006 Java:中国剩余定理

题目描述: 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏...
  • u012340794
  • u012340794
  • 2016年01月16日 20:22
  • 749

poj 3181 完全背包计数+高精度

点击打开链接 #include #include #define Index 1000000000000000000 using namespace std; const int inf=1...
  • Jeremy1149
  • Jeremy1149
  • 2016年07月06日 09:38
  • 162

poj1014完全背包 hdu2191多重背包 经典二进制优化

多重背包或者完全背包转换成 01 背包问题就是多了个二进制优化 把它的件数C 用分解成若干个件数的集合 这里面数字可以组合成任意小于等于C 的件数,而且不会重复 之所以叫二进制分解,是因为这样分解可以...
  • Summer__show_
  • Summer__show_
  • 2016年05月25日 20:32
  • 621

ACM_模板_中国剩余定理(互质与非互质)

中国剩余(余数)定理,又称孙子定理,是我们老祖宗智慧的结晶,而在我们ACM界,又是一种黑箱算法,每次需要时只需要套模板即可搞定。 此算法编写上的精华在于每次通过扩展欧几里得算法求得每一个的相应解,最后...
  • RaAlGhul
  • RaAlGhul
  • 2016年03月04日 21:42
  • 767
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 3372 完全剩余系
举报原因:
原因补充:

(最多只允许输入30个字)