結果
| 問題 |
No.2954 Calculation of Exponentiation
|
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2024-05-22 09:28:06 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 932 bytes |
| コンパイル時間 | 1,818 ms |
| コンパイル使用メモリ | 193,800 KB |
| 最終ジャッジ日時 | 2025-02-21 16:24:55 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 3 |
| other | WA * 28 |
ソースコード
#include<bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
using namespace std;
void varify(bool is_pm){
string s;
cin >> s;
int n = s.size();
if(is_pm){
if(s[0] == '-'){
string t;
rep(i, n - 1) t += s[i + 1];
swap(s, t);
n--;
}
}
assert(n >= 6);
int dot = -1;
rep(i, n){
if(s[i] == '.'){
// multiple . is NG
if(dot != -1) assert(false);
dot = i;
continue;
}
assert(s[i] - '0' >= 0 && s[i] - '0' <= 9);
}
// just integer is NG
assert(dot != -1);
// .0 .00 .000 is NG
assert(dot == n - 5);
// 00.0000 is NG
int zero = 0;
rep(i, dot){
if(s[i] == '0') zero++;
else zero -= 100;
}
assert(zero <= 1);
long long INT = 0;
rep(i, n){
if(s[i] == '.') continue;
INT *= 10;
INT += s[i] - '0';
}
// 0 < A <= 1e9, -1e9 <= B <= 1e9
if(is_pm) assert(0 <= INT <= 1000000000);
else assert(0 < INT <= 1000000000);
}
int main(){
varify(false);
varify(true);
return 0;
}