題目:
題目描述
老虎和蒜頭是好朋友。
秋天到了,森林中學又迎來了一年一度的招生季。
為了與科技時代接軌,森林中學今年即將使用全新的答題卡。
只要考試時學生對答題卡進行規範性的填塗,考試後不用多久就能得到大家考試的成績了。
然而,被聘請為顧問的老虎卻犯了難。原來,在數學考試中,往往會出現如 2
/3,√23這樣的答案,
而這樣的答案在答題卡上沒有填塗的方案——答題卡上只能夠填塗在 0 至 999 之間的整數。
於是老虎靈機一動,想出了乙個絕妙的主意:
如果答案是乙個分數 x/y 的話,如果該分數已經不可約分,那麼學生需要在答題卡上填塗 x+y ;
否則,學生需要約分後再填塗。
例如,答案為 4
/6 時應該填塗 5 ,而答案是 233
/1 時應該填塗 234 。
不過,這樣似乎並不能解決所有的問題,雖然答案是 1996
/2 時可以填塗 999 ,
但答案是 1998
/2 時應當填塗 1000 ,但答題卡已經不允許填塗這麼大的數字了。
因此,在出題時一定要謹慎,避免這種情況的發生。
一天,老虎和蒜頭聊起這事。於是蒜頭產生了乙個奇怪的問題:給定 a≤b,c≤d ,那麼對於所有 a≤x≤b,c≤y≤da≤x≤b,c≤y≤d ,有多少分數 x/y 是可以被填塗進答題卡的?你現在的任務就是解決這樣的問題。
輸入格式
共一行四個正整數 a,b,c,da,b,c,d 。
輸出格式
共一行乙個整數,表示可以被填塗進答題卡的數字個數。由於答案可能很大,你只要輸出其對 109
+7 取模的答案即可。
樣例樣例一
input58
36output
16樣例二
input
2018
2019
2018
2019
output
2資料範圍及限制
對於 100
% 的資料,1≤a,b,c,d≤1012
,a≤b,c≤d1≤a,b,c,d≤1012
,a≤b,c≤d 。
對於 20
% 的資料,1≤a,b,c,d≤101≤a,b,c,d≤10 。
對於 40
% 的資料,1≤a,b,c,d≤10001≤a,b,c,d≤1000 。
對於 60
% 的資料,1≤(b−a+
1)×(d−c+
1)≤1061≤(b−a+
1)×(d−c+
1)≤106 。
對於另外 20
% 的資料,1≤a,b,c,d≤10^6
1≤a,b,c,d≤10
^6 。
時間限制:
1s空間限制:
512mb
思路:
列舉最簡分數i/j,求出乙個k的範圍,使得 a<=ik<=b,c<=jk<=d。
**:
//by juruozar
#pragma gcc optimize(2)
#include
using
namespace std;
#define maxn 20000
#define read(x) scanf("%d",&x);
int n;
char a[maxn+5]
;char b[maxn+5]
;int ans[maxn+5]
,cnt=0;
intmain()
} ans[
++cnt]
=i;continue
; end:
; s=0;
for(
int j=
1;j<=n;j++
) a[j]
=b[j]
;for
(int j=
1+i;j<=n-i;j++)}
for(
int j=
1;j<=i;j++)if
(s<
2) ans[
++cnt]
=i; flag:;}
int c=
(cnt-1)
/(1e5)+1
;printf
("%d\n"
,cnt)
;for
(int i=
1;i*c<=cnt;i++
)printf
("%d "
,ans[i]);
return0;
}
noip膜你賽day2 總結
先膜拜一遍gen4512大牛 然後是總結 第一題,沒有選擇線段樹,因為我並沒有想到要去驗證azui具有結合律,不過交換率倒是去驗證過,很顯然失敗了,但後面我找到乙個規律,於是字首和直接搞定。成功ac。後來發現這道題的運算法則叫 同或 相同為1,相異為0 對於這種題,定義了一種新的運算,我認為,突破點...
膜你賽 ROAD (跑路)
小a的家到公司的路可以看做乙個有向圖,小a家為點1,公司為點n,每條邊長度均為一千公尺。假設小a每秒鐘可以跑2 k千公尺 k是任意數 當然,所以總跑路長度不能超過maxlongint千公尺。問最少需要幾秒才能到公司。資料保證1到n至少有一條路徑。第一行兩個整數n,m,表示點的個數和邊的個數。接下來m...
2018 10 30 膜你賽 火柴
題目 題目描述 p同學總共有k根火柴,分別放在擺成一列的n個火柴盒內,保證k是n的倍數。p同學想要每個火柴盒都有相同數目的火柴,每次他可以從乙個火柴盒中拿一根火柴放到相鄰的火柴盒中。他想知道他最少要移動多少次。輸入輸出格式 輸入格式 第一行乙個整數n,表示火柴盒數。第二行n個整數a 1,a 2,a ...