1. 程式人生 > >「CF656B」 Scrambled 解題報告

「CF656B」 Scrambled 解題報告

咳咳~這……不是一道惡意評分題
其實這也是一篇不正兒八經的題解這不是一篇嗎?!
好吧,首先資料都很小,立馬想到暴力
那麼,怎麼暴力呢?/摸下巴
先看題目,我們可以發現,題目對精度的要求很小——也就是$10^{-4}$
所以,我們可以猥瑣魚尾 為所欲為 用各種神奇的方法求解
作為一名低學歷的OIer,我想引用初中數學八上?八下?的內容——用頻數估計頻率
還記得那個拋硬幣的實驗嗎?
實踐出真知可是小平爺爺說的!
秉承著優良的傳統,我們就來

列舉吧!

列舉從當前往後1,000,000(別數了,十萬,一百萬~)天包括當前天,所以迴圈寫(其實問題也不大)

i = 0 to Max-1
我話~~ 不 ~~多,上程式碼

#include<bits/stdc++.h>
#define Max 1000000
using namespace std;
int n;
int a[20];
int b[20];
int ans;
int read()
{
    int s=0;
    char c=getchar();
    while(!isdigit(c))
        c=getchar();
    while(isdigit(c))
    {
        s=(s<<1)+(s<<3)+c-'0';
        c=getchar();
    }
    return s;
}
int main()
{
    int i,j;
    n=read();
    for(i=1;i<=n;i++)
        a[i]=read();
    for(i=1;i<=n;i++)
        b[i]=read();
    for(j=0;j<Max;j++)//實踐出真知!
        for(i=1;i<=n;i++)
            if(j%a[i]==b[i])
            {
                ans++;
                break;
            }
    printf("%lf",ans/1000000.0);//就這樣~~水了~~過去?!
    return 0;
}