日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > POJ 1006 Biorhythms

POJ 1006 Biorhythms

來源:程序員人生   發布時間:2015-01-24 08:56:57 閱讀次數:3419次

POJ 1003,1004,1005 比較簡單,很快就解決了。有個小插曲,剛開始做ACM不太懂,最近提交問題反饋最多的就是Runtime Error,開始我以為是超時,1方面我懷疑是否是Java跑得太慢了,然后去了解發現有些國際大賽推薦用java,那說明java本身是不慢的。另外一方面我懷疑是我程序太爛,每次都很耗時,所以每次遇到Runtime Error問題就去優化代碼,但有時候怎樣優化都不行。在做POJ1005的時候,網上的代碼貼上去AC了,但是我的不行,但兩個程序已完全1樣了,這個時候才發現罪魁罪魁是我提交時總是帶著包名(有時候手動是去了的)。


POJ 1006這個題目我雖然能提交通過,但我的方法更多的算暴力破解。

import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); for(int j=1; j<Integer.MAX_VALUE; j++){ int p = scanner.nextInt() % 23; int e = scanner.nextInt() % 28; int i = scanner.nextInt() % 33; int d = scanner.nextInt(); if(p==⑴ && e==⑴ && i==⑴ && d==⑴) return; for(int number=0; number<=21252+d; ){ if(p == number % 23){ if(e == number % 28){ if(i == number % 33) { if (number-d <= 0) number += 21252; System.out.println("Case "+j+": the next triple peak occurs in "+ (number-d) +" days."); break; } else number += 23*28; } else number += 23; } else number ++; } } } }


解題的關鍵是從復雜錯亂的描寫中抽象出問題的本質,也就是將現象轉化為數學問題。POJ1006這個問題的難點是背后的數學問題――中國剩余定理。

1個數除3余2,除5余3,除7余2。可以用初等數論中的同余方程組來求解,利用同余的符號,可以將上述問題轉化為下面的同余方程組:
x ≡ 2 (mod 3);
x ≡ 3 (mod 5);
x ≡ 2 (mod 7);
不難看出上述同余方程組的解其實不唯1,由于如果x是1個解,則x+3*5*7*k=x+105k也是該同余方程組的1個解。事實上,從3,5,7兩兩互質可知上述同余方程組的任意兩個解相差105的倍數。如何求出上述同余方程組最小的那個解呢?我們的先人聰明的把問題轉化為以下3個非常特殊的同余方程組的求解
a ≡ 1 (mod 3); b ≡ 0 (mod 3); c ≡ 0 (mod 3);
a ≡ 0 (mod 5); b ≡ 1 (mod 5); c ≡ 0 (mod 5);
a ≡ 0 (mod 7); b ≡ 0 (mod 7); c ≡ 1 (mod 7);
則2a+3b+2c就是原同余方程組的1個解(即2a+3b+2c是被3除余a,被5除余b,被7除余c的數),如果這個數小于105,則即為所求的最小整數解。經過簡單計算可知a可以取70,b可以取21,c可以取15。計算可得2a+3b+2c=233,除以105后的余數23就是所求的最小正整數解。


回到POJ1006這個題目,已知number % 23 = p,number % 28 = e,number % 33 = i
使33*28*a被23除余1,可得5544  = 33*28*6
使23*33*b被23除余1,可得14421 = 23*33*19
使23*28*c被33除余1,可得1288  = 23*28*2
因此有(5544*p + 14421*e + 1288*i) % lcm(23, 28, 33) = number
又由于23,28,33互質,所以lcm(23, 28, 33) = 21252。所以number = (5544*p + 14421*e + 1288*i) % 21252,所求的是number-d,本題求的是最小整數解,避免n為負數需要在number-d<=0的時候加21252。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产一区二区三区亚洲 | 国产激情久久久久影院小草 | 国产精品久久久久久久7电影 | 99re视频在线| 久久成人精品 | 888久久久 | 成年人免费网站 | 国产精品精品久久久 | 精品一区二区久久 | 久久精品日产第一区二区三区 | 就要操| 成 人色 网 站 欧美大片在线观看 | 美女91网站 | 少妇翘臀亚洲精品av图片 | 久久成人a | 亚洲1234区| 激情婷婷综合 | 中文字幕乱视频 | 青青草这里有精品 | 超碰久热 | 久久久av| 久久免费视频网站 | 在线看片日韩 | 一区二区三区免费在线观看 | 91精产品一区一区三区 | 香蕉视频成年人 | av黄色免费 | 九九热久久这里只有精品 | 黄色在线免费 | 久久久噜噜噜久久中文字幕色伊伊 | 久久久久久久久久国产 | 国产精品久久久久久久久久东京 | 久久免费视频在线观看 | 欧美精品久久久久a | 三级电影免费 | 99久久99久久精品国产片果冻 | 99久久视频| 欧美精品一区二区三区蜜桃视频 | 在线观看的av网站 | 99热这里只有精品2 国产福利在线导航 | 麻豆日韩|