1 条题解
-
0问号 (周文浩) LV 10 @ 2023-9-26 22:45:54
#include<iostream> #include<bits/stdc++.h> using namespace std; int ans[200]; int Get[10]; char Cin[10]; int mul; void func(){ int temp[200] = {0}; for(int i = 1; i <= ans[0]; ++i){ for(int j = 1; j <= Get[0]; ++j){ temp[i+j-1] += ans[i]*Get[j]; temp[i+j] += temp[i+j-1] / 10; temp[i+j-1] = temp[i+j-1] % 10; } } int num = ans[0]+Get[0]; while(temp[num] == 0)num--; ans[0] = num; for(int i = 1; i <= num; ++i)ans[i] = temp[i]; return ; } int main(){ while(cin >> Cin >> mul){ int num = 1; int pos = -1; int flag = 0; if(Cin[0] == '0')flag = 1; for(int i = strlen(Cin) - 1; i >= 0; --i){ if(Cin[i] == '.'){ pos = strlen(Cin) - i; continue; } Get[num++] = Cin[i] - '0'; } if(pos == -1)pos = 1,Get[0] = strlen(Cin); else Get[0] = strlen(Cin) - 1; ans[0] = Get[0]; for(int i = 1; i <= Get[0]; ++i)ans[i] = Get[i]; for(int i = 1; i < mul; ++i){ func(); } int l = 1,r = ans[0]; while(ans[l] == 0 && l <= (pos-1)*mul)l++; if(flag){ cout << "0."; for(int i = (strlen(Cin)-2)*mul; i >= l; --i){ if(i > ans[0])cout << 0; else cout << ans[i]; } cout << endl; } else{ for(int i = r; i >= l; --i){ if(i == (pos-1) * mul)cout << '.'; cout << ans[i]; } cout << endl; } memset(ans,0,sizeof(ans)); memset(Get,0,sizeof(Get)); } return 0; }
- 1
信息
- ID
- 1192
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 39
- 已通过
- 4
- 上传者