高精度运算-10494 If We Were a Child Again
2016-08-01 19:45
302 查看
题目大意:s1 OP s2,计算值
解题过程:这道题一开始我用bign的结构体写的,后来TLE之后,发现没有必要所有运算都用高精度,因为除数是int型的,所以在运算的中间结果也不会超过long long型
正确代码;
解题过程:这道题一开始我用bign的结构体写的,后来TLE之后,发现没有必要所有运算都用高精度,因为除数是int型的,所以在运算的中间结果也不会超过long long型
正确代码;
# include <cstdio> # include <cstdlib> # include <ctime> # include <cmath> # include <iostream> # include <fstream> # include <cstring> # include <string> //* #define fin cin #define fout cout //*/ # define maxn 10000 # define maxint 2147483647 using namespace std; /* ifstream fin("in.txt"); ofstream fout("out.txt"); //*/ int judge(string s1,string s2){ if(s1.length()>s2.length()) return 1; if(s1.length()<s2.length()) return -1; for(int i=0;i<s1.length();i++){ if(s1[i]>s2[i]) return 1; if(s1[i]<s2[i]) return -1; } return 0; } int stringtoint(string s){ int res=0; for(int i=0;i<s.length();i++){ res=res*10+(s[i]-'0'); } return res; } void divide(string s,int dividen,string& div,int& mod){ long long midle; string res; int diving; int i; for(i=0,midle=0;i<s.length();i++){ midle=midle*10+(s[i]-'0'); if(midle>=dividen) break; } diving=midle/dividen; // fout<<"上"<<diving<<endl; div+=(char)(diving+'0'); midle%=dividen; // fout<<"余"<<midle<<endl; for(i=i+1;i<s.length();i++){ midle=midle*10+(s[i]-'0'); diving=midle/dividen; // fout<<"上"<<diving<<endl; div+=(char)(diving+'0'); midle%=dividen; // fout<<"余"<<midle<<endl; } mod=midle; } //2147483648 % 2147483647 int main() { string s1; int d; char op; string maxs="2147483647"; string div; int mod; while(fin>>s1>>op>>d){ if(judge(s1,maxs)<1){ int ta; ta=stringtoint(s1); if(op=='/') fout<<ta/d<<endl; else fout<<ta%d<<endl; } else { div=""; mod=0; divide(s1,d,div,mod); if(op=='/') fout<<div<<endl; else fout<<mod<<endl; } } return 0; }
相关文章推荐
- (高精度运算4.7.27)UVA 10494 If We Were a Child Again(大数除法&&大数取余)
- (高精度运算4.7.27)UVA 10494 If We Were a Child Again(大数除法&&大数取余)
- UVA 10494 If We Were a Child Again 高精度除以低精度。。
- If We Were a Child Again - UVa 10494 高精度
- uva 10494 If We Were a Child Again(高精度与低精度求模和商)
- UVA 10494 - If We Were a Child Again(高精度除法和取余)
- UVA 10494 - If We Were a Child Again(高精度除法和取余)
- UVa 10494 If We Were a Child Again (高精度)
- Uva 10494 If We Were a Child Again(高精度相除)
- UVA 10494 (暑假-高精度 -D - If We Were a Child Again)
- UVA - 10494 - If We Were a Child Again
- UVA 10494 - If We Were a Child Again
- UVA - 10494 If We Were a Child Again
- 10494 - If We Were a Child Again
- UVA 10494-If We Were a Child Again(大数除法及取余)
- UVA - 10494 If We Were a Child Again
- uva 10494 - If We Were a Child Again 大数除法和取余
- UVA 10494 - If We Were a Child Again(大数除法和取模)
- UVA 10494 If We Were a Child Again
- UVA - 10494 If We Were a Child Again