結果
問題 | No.101 ぐるぐる!あみだくじ! |
ユーザー |
![]() |
提出日時 | 2014-12-11 23:42:40 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 357 ms / 5,000 ms |
コード長 | 2,452 bytes |
コンパイル時間 | 847 ms |
コンパイル使用メモリ | 89,812 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-11 20:44:41 |
合計ジャッジ時間 | 3,340 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 37 |
コンパイルメッセージ
main.cpp:134:1: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type] 134 | main() try{ | ^~~~
ソースコード
#include <cstdlib>#include <cmath>#include <climits>#include <cfloat>#include <map>//#include <utility>#include <set>#include <iostream>//#include <memory>#include <string>#include <vector>#include <algorithm>//#include <functional>#include <sstream>//#include <deque>#include <complex>#include <stack>#include <queue>#include <cstdio>//#include <cctype>#include <cstring>//#include <ctime>#include <iterator>#include <bitset>//#include <numeric>//#include <list>//#include <iomanip>#if __cplusplus >= 201103L#include <array>#include <tuple>#include <initializer_list>#include <unordered_set>#include <unordered_map>#include <forward_list>#define cauto const auto&#else#endifusing namespace std;namespace{typedef long long ll;typedef pair<int,int> pii;typedef pair<ll,ll> pll;typedef vector<int> vint;typedef vector<vector<int> > vvint;typedef vector<long long> vll, vLL;typedef vector<vector<long long> > vvll, vvLL;#define VV(T) vector<vector< T > >template <class T>void initvv(vector<vector<T> > &v, int a, int b, const T &t = T()){v.assign(a, vector<T>(b, t));}template <class F, class T>void convert(const F &f, T &t){stringstream ss;ss << f;ss >> t;}#define reep(i,a,b) for(int i=(a);i<(b);++i)#define rep(i,n) reep((i),0,(n))#define ALL(v) (v).begin(),(v).end()#define PB push_back#define F first#define S second#define mkp make_pair#define RALL(v) (v).rbegin(),(v).rend()#define MOD 1000000007LL#define EPS 1e-8static const int INF=1<<24;int gcd( int m, int n ){// 引数に0がある場合は0を返すif ( ( 0 == m ) || ( 0 == n ) )return 0;// ユークリッドの方法while( m != n ){if ( m > n ) m = m - n;else n = n - m;}return m;}int lcm( int m, int n ){// 引数に0がある場合は0を返すif ( ( 0 == m ) || ( 0 == n ) )return 0;return ((m / gcd(m, n)) * n); // lcm = m * n / gcd(m,n)}//lcmvoid mainmain(){int n,K;cin>>n>>K;vint v(n);rep(i,n) v[i]=i;rep(i,K){int a,b;cin>>a>>b;swap(v[a-1],v[b-1]);}vint c(n,0);rep(i,n){int t=i;do{t=v[t];c[i]++;}while(t!=i);}int ans=lcm(c[0],c[1]);rep(i,n-2){ans=lcm(ans,c[i+2]);}cout<<ans<<endl;}}main() try{mainmain();}catch(...){}