51nod 1333 無聊的數學家們

2021-07-30 03:08:47 字數 1552 閱讀 8216

問題來自於乙個精彩的故事:

有三個數學家,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的值是這兩個數的「積」。而且這三個數學家的數學功底足夠好。下面是b與c進行的對話:

b:「我確定你一定沒有百分百的把握猜中我得到的數。」

c:「謝謝你的提示。現在我能確定你獲得的數是 s。」

故事結束,回到問題。

這個故事中一共涉及3個未知引數x,y與s,其實由於s=x+y,所以實際一共只有兩個未知引數而已。你可以帶入一些正整數讓這個故事沒有邏輯漏洞。現在問題來了,在區間[l,r]上存在多少個數值t,使s=t時能找到對應的x與y,並讓這個故事成立。輸出這些t的和(1<=l<=r<=5,000,000)。

多組測試資料,第一行乙個整數t,表示資料個數,其中1<=t<=10.

之後有t行,每行兩個數l與r,表示一組詢問,其中1<=l<=r<=5,000,000.

輸出t行,每行乙個整數,即[l,r]區間中所有符合條件的s的和。

3 30 33

8 11

40 43

33 19

0首先,怎麼知道對方無法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 

#define n 5000010

long

long prime[n / 5];

long

long

sum[n];

bool notprime[n];

void getsum()

}for (int i = 1; i <= n - 10; i++)

sum[i] = i;

for (int i = 2; i <= n - 10; i++)

for (int j = i; j <= (n - 10) / i; j++)

if (notprime[i + j - 1])

sum[i * j + 1] = 0;

for (int i = 1; i <= n - 10; i++)

if (!notprime[i])

sum[i + 1] = 0;

sum[1] = sum[2] = 0;

for (int i = 1; i <= n - 10; i++)

sum[i] += sum[i - 1];

}int main()

}

51nod 1333 無聊的數學家

很有趣的題目。首先,怎麼知道對方無法100 猜中?考慮對方什麼時候100 猜中。顯然是拿了個質數。因此和s一定不可以被表示成質數 1,不然對方100 猜中。b說的那句話也就是告訴了c這樣的資訊 我的數不是質數 1 那麼為什麼c就猜出來了呢?肯定有唯一解!假設c拿到的是p,p為合數。對於1 p p這組...

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個問題的解法。在許多方面 如解聯立方程,分數四則...