题目:http://community.topcoder.com/stat?c=problem_statement&pm=12083

这道题还是挺耐想的(至少对我来说是这样)。开始时我只会60%的算法,在借鉴了巨神zhx的代码并查阅了官方题解后才终于懂了点了。

两两互质的情形

首先,考虑简化的情形:若模板i的长度为li,我们加上限制,即所有模板的长度两两互质。

假设当前位置x对应第i个模板的位置为ai,当且仅当,而li是两两互质的,由中国剩余定理,x在范围内有唯一解。这样,这个问题就被秒掉了。

一般情形

下面考虑一般情形。

假设有两个模板i和j,,我们可以考虑将正整数集合中的元素按照模k的余数分成k个子集,设b属于集合Mt当且仅当b mod k = t。那么,如果x属于集合Mt,则有ai mod k = aj mod k = x mod k = t,因为ai = x mod li,而k | li。这样,我们实际上只需要考虑模k相同的(ai, aj),这相当于将模板i拆成了li / k个子模板,模板j拆成了lj / k个子模板,而gcd(li / k, lj / k) = 1,所以我们可以用前面的互质情形解决。

最终的解法

因为50以内的合数x必须满足,其中P为素数集合,所以我们可以考虑将小于sqrt(50)的素数和不小于sqrt(50)的素数分开考虑。小于sqrt(50)的素数只有2,3,5,7四个,而32 * 27 * 25 * 49很小,所以我们可以直接将li为2,3,5,7几个素数乘积的模板i扩展合并为一个新的长度为32 * 27 * 25 * 49的新模板。然而,除开这些模板,另外的模板和这个新模板的长度并不一定互质,如长度为22的模板。但是,我们注意到,对于其他在50以内的合数,即存在大于sqrt(50)的素因子的合数,它们含有的小于sqrt(50)的素因子不会太多,因为11 * 5 > 50,而11仅能和一个3相乘,或者和两个2相乘,再多一点就爆出50了。而且注意到,对于这种合数,大于sqrt(50)的素因子有且仅有一个,因为sqrt(50) * sqrt(50) = 50。所以,若模板i满足p | li,p > sqrt(50),则我们将它扩展为l' = 12 * li的新模板。这样我们得到了新的模板以替换旧模板,而它们的长度有且仅有两种:32 * 27 * 25 * 49,及2 * 2 * 3 * p,其中p为大于sqrt(50)的素数。它们的最大公因数显然是2 * 2 * 3,而它们拆分后的新长度显然是两两互质的。

[TCO 2012 Round 3A Level3] CowsMooing (数论,中国剩余定理,同余方程)的更多相关文章

  1. acm数论之旅--中国剩余定理

    ACM数论之旅9---中国剩余定理(CRT)(壮哉我大中华╰(*°▽°*)╯)   中国剩余定理,又名孙子定理o(*≧▽≦)ツ 能求解什么问题呢? 问题: 一堆物品 3个3个分剩2个 5个5个分剩3个 ...

  2. 数论E - Biorhythms(中国剩余定理,一水)

    E - Biorhythms Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Subm ...

  3. hihocode 九十七周 中国剩余定理

    题目1 : 数论六·模线性方程组 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:今天我听到一个挺有意思的故事! 小Hi:什么故事啊? 小Ho:说秦末,刘邦的将军 ...

  4. 《孙子算经》之"物不知数"题:中国剩余定理

    1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数.  如果 m ...

  5. POJ 1006 中国剩余定理

    #include <cstdio> int main() { // freopen("in.txt","r",stdin); ; while(sca ...

  6. poj1006中国剩余定理

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 103506   Accepted: 31995 Des ...

  7. (伪)再扩展中国剩余定理(洛谷P4774 [NOI2018]屠龙勇士)(中国剩余定理,扩展欧几里德,multiset)

    前言 我们熟知的中国剩余定理,在使用条件上其实是很苛刻的,要求模线性方程组\(x\equiv c(\mod m)\)的模数两两互质. 于是就有了扩展中国剩余定理,其实现方法大概是通过扩展欧几里德把两个 ...

  8. 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)

    洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...

  9. 洛谷P3868 [TJOI2009]猜数字(中国剩余定理,扩展欧几里德)

    洛谷题目传送门 90分WA第二个点的看过来! 简要介绍一下中国剩余定理 中国剩余定理,就是用来求解这样的问题: 假定以下出现数都是自然数,对于一个线性同余方程组(其中\(\forall i,j\in[ ...

随机推荐

  1. TCP/IP协议原理与应用笔记11:TCP/IP中地址与层次关系

    1. 网络中常用的地址: 2. TCP/IP中地址与层次关系 :

  2. (转)Vim用法小结

    这是我转的一些vim基本用法,可能对初用者会有帮助,独乐乐不如众乐乐,是吧! Vim一般的Unix和Linux下均有安装.  三种状态 Command: 任何输入都会作为编辑命令,而不会出现在屏幕上 ...

  3. 【开源java游戏框架libgdx专题】-06-使用libgdx自带的日志方法

    Application 接口提供了简单的日志记录,并且提供了颗粒度的控制. Gdx.app.log("MyTag", "my informative message&qu ...

  4. JS正则表达式验证账号、手机号、电话、邮箱、货币

    验证帐号是否合法验证规则:字母.数字.下划线组成,字母开头,4-16位. function checkUser(str){ var re = /^[a-zA-z]\w{3,15}$/; if(re.t ...

  5. 探究Activity的各回调方法

    刚毕业那会儿,一心想朝着java web的方向进军,却岂料实习的时候阴差阳错地踏入了Android的大门,自此人生跌宕起伏.坎坎坷坷,在一家外企参与了几个需要越过GFW才能使用的有关于体育赛事的项目, ...

  6. 各版本 linux(转)

    Linux各种版本下载 ftp://ftp.linuxforum.net/ISO/Redhat7.3/valhalla-i386-disc1.iso ftp://ftp.linuxforum.net/ ...

  7. 牛顿法与拟牛顿法,DFP法,BFGS法,L-BFGS法

    牛顿法 考虑如下无约束极小化问题: $$\min_{x} f(x)$$ 其中$x\in R^N$,并且假设$f(x)$为凸函数,二阶可微.当前点记为$x_k$,最优点记为$x^*$. 梯度下降法用的是 ...

  8. iOS横竖屏切换的一些坑(持续更新)

    最近在做视频类的App,遇到视频滚动播放的坑,紧接着就是横竖屏问题.之前太过天真不想做横竖屏配置.只是想旋转视频View,但是分享什么的包括AlertView还是竖屏样式,项目着急上线(1周提交一次也 ...

  9. 01.Net入门知识

    1..Net学习路线及几个容易混淆的概念 .Net只是一个平台,提供运行.Net程序需要的虚拟机.类库等 C#就是.Net平台下的一个开发语言,.Net下的语言还有VB.Net.PowerShell等 ...

  10. 4.HTTP入门

    什么是http协议查看http协议的工具http协议内容Http请求请求行http协议版本请求资源请求方式GET方式提交POST方式提交请求头3.3 实体内容3.4 HttpServletReques ...