結果
| 問題 |
No.265 数学のテスト
|
| コンテスト | |
| ユーザー |
omu
|
| 提出日時 | 2015-08-09 00:53:43 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 301 ms / 2,000 ms |
| コード長 | 1,305 bytes |
| コンパイル時間 | 2,361 ms |
| コンパイル使用メモリ | 77,200 KB |
| 実行使用メモリ | 46,532 KB |
| 最終ジャッジ日時 | 2024-11-24 11:28:47 |
| 合計ジャッジ時間 | 8,638 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 32 |
ソースコード
package tmp;
import java.util.Scanner;
public class Main {
static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
solve();
}
static long[] ans;
static void cast(int D,int d,long num){
for(int j = D;j > 0;j--){
num *= d;
d--;
}
if(d < 0)return;
ans[d] += num;
}
static void solve(){
String s;
int n;
int l = sc.nextInt();
n = sc.nextInt();
n++;
s = sc.next();
ans = new long[n];
int D = 0;
for(int i = 0;i < l;i++){
if(i < l-1 && s.substring(i,i+2).equals("d{")){
D++;i++;continue;
}
if(i < l && s.substring(i,i+1).equals("}")){
D--; continue;
}
int d = 0;
int num = 1;
while(true){
String c = s.substring(i,i+1);
if(c.equals("d")){
i--;
break;
}
if(c.equals("+")){
i++;
continue;
}
if(c.equals("x")){
d++;
}else{
num *= Integer.parseInt(c);
}
if(i == s.length()-1 || s.substring(i+1,i+2).equals("}")){
cast(D,d,num);
break;
}
c = s.substring(i + 1,i + 2);
if(c.equals("*")){
i += 2;
}
if(c.equals("+")){
cast(D,d,num);
i++;
break;
}
}
}
for(int j = 0;j < n;j++){
System.out.print(ans[j]);
System.out.print(" ");
}
System.out.println();
}
}
omu