hdu4542 求反素數

2021-07-10 21:45:36 字數 1457 閱讀 6303

題意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的題解,但是我自己寫的就超時,難道是 人品...