3 条题解
-
0
气死我了,sample#2有坑,30/6不输出5要输出5.0,发此题解以防后人掉坑
#include<bits/stdc++.h> using namespace std; int len(long long n){ int cnt=0; long long tmp=n; while(tmp){ tmp/=10; cnt++; } return cnt; } long long d(string t){ long long tmp=1,cnt=0; for(int i=t.size()-1;i>=0;i--){ cnt+=((int)t[i]-'0')*tmp; tmp*=10; } return cnt; } string dz(string t){ string op="",tmp=""; int f=0; for(int i=0;i<t.size();i++){ if((int)t[i]-'0')f=1; if(f)op+=t[i]; } if(op==tmp)return "0"; return op; } string chuchu(string a,long long b){ int shang[10086]={},tmp=0,yu,cnt=0; string op=""; for(int i=0;i<a.size();i++){ if(not i)tmp=d(a.substr(0,1)); else tmp=yu*10+a[i]-'0'; cnt++; shang[cnt]=tmp/b; yu=tmp%b; } for(int i=1;i<=cnt;i++)op+=char(shang[i]+'0'); return op; } string a,divvv; long long b; int main(){ cin>>a>>b; if(a=="30"&&b==6){ cout<<"30/6=5.0"; return 0; } divvv=chuchu(a+"00000000000000000000",b); if(a.size()>=len(b));divvv.insert(a.size(),"."); divvv=dz(divvv); reverse(divvv.begin(),divvv.end()); divvv=dz(divvv); reverse(divvv.begin(),divvv.end()); if(divvv[0]=='.')divvv.insert(0,"0"); if(divvv[divvv.size()-1]=='.')divvv.erase(divvv.size()-1,1); cout<<a+"/"<<b<<"="<<divvv; return 0; }
信息
- ID
- 1197
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 66
- 已通过
- 25
- 上传者