很有趣的題目。
首先,怎麼知道對方無法100%猜中?
考慮對方什麼時候100%猜中。顯然是拿了個質數。
因此和s一定不可以被表示成質數+1,不然對方100%猜中。
b說的那句話也就是告訴了c這樣的資訊「我的數不是質數+1」
那麼為什麼c就猜出來了呢?肯定有唯一解!
假設c拿到的是p, p為合數。
對於1*p=p這組拆分,p+1顯然不是質數+1(p是合數嘛)
唯一解就肯定是1和p,那麼其餘所有解xy=p,都會有x+y-1是質數。
因此知道了p=s-1。
列舉x和y用n log n篩就行了。
#include
#include
#define fo(i,a,b) for(i=a;i<=b;i++)
using
namespace
std;
typedef
long
long ll;
const
int maxd=5000000+10;
int i,j,k,l,t,n,m,top;
ll pri[1000000],bz[maxd];
bool pd[maxd];
int main()
}fo(i,1,maxd-10) bz[i]=i;
fo(i,2,maxd-10)
fo(j,i,(maxd-10)/i)
if (pd[i+j-1]) bz[i*j+1]=0;
fo(i,1,maxd-10)
if (!pd[i]) bz[i+1]=0;
bz[1]=bz[2]=0;
fo(i,1,maxd-10) bz[i]+=bz[i-1];
int ca;
scanf("%d",&ca);
while (ca--)
}
51Nod 1333 無聊的數學家們
問題來自於乙個精彩的故事 有三個數學家,a,b與c。a選了兩個正整數x與y滿足x y。然後,a將x y的值告訴了b,a又將x y的值告訴了c。b與c都不知道x與y分別是什麼,也不知道對方得到的值是什麼。但b和c知道a告訴b的值是某兩個正整數的 和 而告訴c的值是這兩個數的 積 而且這三個數學家的數學...
51nod 1333 無聊的數學家們
問題來自於乙個精彩的故事 有三個數學家,a,b與c。a選了兩個正整數x與y滿足x y。然後,a將x y的值告訴了b,a又將x y的值告訴了c。b與c都不知道x與y分別是什麼,也不知道對方得到的值是什麼。但b和c知道a告訴b的值是某兩個正整數的 和 而告訴c的值是這兩個數的 積 而且這三個數學家的數學...
數學家劉徽的故事
劉徽 中國數學史上乙個非常偉大的數學家,他的傑作 九章算術注 和 海島算經 是中國最寶貴的數學遺產。他的主要著作有 九章算術注 10卷 重差 1卷,至唐代易名為 海島算經 九章重差圖 l卷。可惜後兩種都在宋代失傳。九章算術 約成書於東漢之初,共有246個問題的解法。在許多方面 如解聯立方程,分數四則...