題意problem description
「今有物不知其數,三三數之有二,五五數之有三,七七數之有二,問物幾何?」
這個簡單的謎題就是中國剩餘定理的來歷。
在艱難地弄懂了這個定理之後,小明開始設計一些複雜的同餘方程組x mod ai = bi 來調戲別人,結果是必然的,都失敗了。
可是在這個過程中,小明發現有時並不一定要把ai和bi告訴你。他只需要告訴你,ai在區間 [1, x] 範圍內每個值取一次時,有k個ai使bi等於0,或有k個ai使bi不等於0,最小的x就可以求出來了。
你來試試看吧!
input
輸入第一行為t,表示有t組測試資料。
每組資料報含兩個整數type和k,表示小明給出的條件。type為0表示「有k個ai使bi等於0」,為1表示「有k個ai使bi不等於0」。
[technical specification]
1 <= t <= 477
1 <= k <= 47777, type = 0 | 1
output
對每組資料,先輸出為第幾組資料,如果沒有這樣的數,輸出「illegal」,否則輸出滿足條件的最小的x,如果答案大於2^62, 則輸出「inf」。
sample input
3 0 3
1 3
0 10
sample output
case 1: 4
case 2: 5
case 3: 48
思路:當type為1時,可以打表,ip陣列表示k對應的最小數ip[k];當type為0時,即求反素數,用乙個dfs求出;
**:
#include
#include
#include
#include
using
namespace
std;
typedef __int64 ll;
#define ns 50100
int top=15;
const ll inf=((ll)1
<<62)+1;
__int64 ans,cnt;
int m,k,type;
__int64 ip[ns+10];
int p[100]=;
void init()
}void dfs(__int64 t,int sum,int pos,int limit) //可以去看求反素數的模板
}int main()
else
printf("case %d: ",s++);
if(ans>=inf)
printf("inf\n");
else
if(ans==0)
printf("illegal\n");
else
printf("%i64d\n",ans);
}}
HDU4542 未知剩餘系 反素數
題目大意 兩種操作 type為0是讓求出約數為k的最小的整數n type為1是讓求有k個數不是n的約數的最小的n。分析 資料範圍為0到47777,對於type為0的情況,就是找出約數為k的最小的反素數 對於type為1,打表就行。實現 如下 includetypedef long long ll c...
hdu 4542 小明系列故事 未知剩餘系
題意 操作0表示某數有n個約數,操作1為某數有n個非約數 n 47777,若是存在小於2 62的數符合,則輸出該數,否則若是不存在輸出illegal,若是大於2 62輸出inf sample input 30 3 1 3 0 10 sample output case 1 4 case 2 5 ca...
hdu 素數回文
ps 題目大意是,給定x和y x y 輸出x和y區間內所有既是素數又是回文的數,5 x y 1e8 這道題很簡單啊,求素數多簡單,求回文多簡單 題目資料範圍過大,導致素數篩直接被捨棄,直接使用乙個for來判斷的話,會超時 可能也不會,網上確實有直接判斷能ac的題解,但是我自己寫的就超時,難道是 人品...