結果
| 問題 |
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;
aguroshou