結果
| 問題 | No.736 約比 | 
| コンテスト | |
| ユーザー |  aguroshou | 
| 提出日時 | 2018-09-28 22:20:49 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 947 ms / 2,000 ms | 
| コード長 | 2,837 bytes | 
| コンパイル時間 | 675 ms | 
| コンパイル使用メモリ | 83,092 KB | 
| 実行使用メモリ | 5,248 KB | 
| 最終ジャッジ日時 | 2024-10-12 06:47:23 | 
| 合計ジャッジ時間 | 4,015 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 65 | 
ソースコード
#include<iostream>
#include <algorithm>
#include<string>
#include <bitset>
#include <vector>
#include <functional>
#include <climits>
#include <iomanip>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <numeric>
using namespace std;
using ll = long long;
int main()
{
	ll a = 0, b = 0, c = 0, d = 0, e = 0;
	ll n, m, h, w, X;
	ll k;
	ll insuusyurui[1000] = {};
	ll insuukazu[1000] = {};
	ll memo[4000] = {};
	ll memo2[4000] = {};
	cin >> n;
	ll z[103] = {};
	ll A[103] = {};
	ll B[103] = {};
	for (int i = 0; i < n; i++)
	{
		cin >> A[i];
		B[i] = A[i];
	}
	ll N = A[0];
	a = 2;
	// √n ≧ a ( n ≧ a * a ) の間ループ処理
	while (N >= a * a) {
		// a で割り切れたら、a は素因数
		// そして、割られる数を a で割る
		// a で割り切れなかったら、 a を 1 増加させる
		if (N % a == 0) {
			//printf("%d * ", a);
			z[c] = a;
			N /= a;
			c++;
		}
		else
		{
			a++;
			//if (insuukazu[c] != 0)
			{
				//	c++;
					//cout << c << endl;
			}
		}
	}
	//printf("%d\n", N);
	z[c] = N;
	for (int i = 0; i < c + 10; i++)
	{
		//cout << z[i] << endl;
	}
	for (int i = 0; i < n; i++)
	{
		for (int k = 0; k <= c; k++)
		{
			if (z[k] != 0)
			{
				if (A[i] % z[k] == 0)
				{
					A[i] /= z[k];
				}
				else
				{
					z[k] = 0;
				}
			}
		}
	}
	d = 1;
	for (int i = 0; i <= c; i++)
	{
		if (z[i] != 0)
		{
			d *= z[i];
		}
	}
	for (int i = 0; i < c + 10; i++)
	{
		//cout << z[i] << endl;
	}
	for (int i = 0; i < n; i++)
	{
		//cout << A[i] / d << endl;
		cout << B[i] / d;
		if (i<n-1)
		{
		cout << ":";
		}
	}
	cout  << endl;
	//cout << sum << endl;
	//cout <<  endl;
	return 0;
}
//memcpy(x, visited, sizeof(ll)*n);
//void kansuu(ll num, ll visited[10]) {}
//kansuu(1, zz);
//cout << setprecision(15) << v << endl;
//int temp;
//for (int i = 0; i < n - 1; i++) {
//	for (int j = n - 1; j > i; j--) {
//		if (w[j - 1] < w[j]) {  /* 前の要素の方が大きかったら */
//			temp = w[j];        /* 交換する */
//			w[j] = w[j - 1];
//			w[j - 1] = temp;
//		}
//	}
//}
//
//ll insuusyurui[1000] = {};
//ll insuukazu[1000] = {};
//ll memo[4000] = {};
//ll memo2[4000] = {};
//cin >> n;
//cin >> m;
//a = 2;
//// √n ≧ a ( n ≧ a * a ) の間ループ処理
//while (n >= a * a) {
//	// a で割り切れたら、a は素因数
//	// そして、割られる数を a で割る
//	// a で割り切れなかったら、 a を 1 増加させる
//	if (n % a == 0) {
//		printf("%d * ", a);
//		insuukazu[c]++;
//		n /= a;
//	}
//	else {
//		a++;
//		//if (insuukazu[c] != 0)
//		{
//			c++;
//			//cout << c << endl;
//
//		}
//	}
//}
//printf("%d\n", n);
//for (int i = 0; i < c; i++)
//{
//	//cout << insuukazu[i] << endl;
//}
//
//cout << "Yes" << endl;
            
            
            
        