結果
| 問題 |
No.219 巨大数の概算
|
| コンテスト | |
| ユーザー |
mobius_bkst
|
| 提出日時 | 2015-05-30 13:46:13 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 28 ms / 1,500 ms |
| コード長 | 1,116 bytes |
| コンパイル時間 | 693 ms |
| コンパイル使用メモリ | 60,888 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-07 17:03:07 |
| 合計ジャッジ時間 | 4,119 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 51 |
ソースコード
//============================================================================
// Name : yukicoder219.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include<math.h>
using namespace std;
int main() {
double logarithmTable[100];
for (int i = 10; i < 100; i++) {
logarithmTable[i] = log10(i * 0.1);
}
int N;
cin >> N;
for (int i = 0; i < N; i++) {
long A;
long B;
cin >> A >> B;
long double ans = B * log10(A);
long Z = (long)floor(ans);
long double decimalPart = ans - Z;
int high = 100;
int low = 10;
int mid;
while (low < high) {
mid = (high + low) / 2;
if (decimalPart == logarithmTable[mid]) {
break;
} else if (decimalPart < logarithmTable[mid]) {
high = mid;
} else {
low = mid + 1;
}
}
double XY = mid * 0.1;
int X = (int) floor(XY);
int Y = (int) ((XY - X) * 10);
cout << X << " " << Y << " " << Z << endl; // prints !!!Hello World!!!
}
return 0;
}
mobius_bkst