- int型からはみ出してしまって撃沈 -> longに修正
- このコードだと、N=1e9, M=1 でタイムアウトになるみたい。
- whileループがN回(i.e. 1e9回)のループになっちゃう。
- それ以前に、N=1000000000, M=999999999 でおかしな値が出ているな。
- この問題は、それなりに考えてコードを書かないと死ぬ問題だったようだ。
#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
#include <utility>
#include <set>
#include <cctype>
#include <queue>
#include <stack>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
class Starport{
public:
double getExpectedTime(int N, int M){
double ret = 0;
long cnt = 1;
long i = 1;
long temp;
while((i * M) % N > 0){
temp = ((long)N - i * M) % N;
ret += temp > 0 ? temp : temp + N;
cnt ++;
i++;
}
return ret / cnt;
}
};