UVA10494-如果我们返回童年

此题主要是卡在当被除数是0 的特殊情况,综合分析还是自己考虑不够全面!!!

其他的就是别忘了对v进行初始化。


#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main ()
{
    string s, t, r;
    char c;
    long long int u = 0;
    long long int v = 0;
    while(cin>>s>>c>>t)
    {
        if(s[0]=='0'){cout<<0<<endl;continue;}
        v = 0; u = 0;r.erase();
        for(int i = 0; i < (int)t.size(); i++)
        {
            u += pow(10,i) * (t[t.size()-i-1]-'0');
        }
        //cout<<u<<endl;
        for(int j =0; j < (int)t.size(); j++)
        {
            v += pow(10,j) * (s[t.size()-j-1]-'0');
        }
        //cout<<v<<endl;
        for(int i = 0; i <= (int)s.size()-(int)t.size(); i++)
        {
            r += v / u + '0';
            //cout<<r<<endl;
            //cout<<v<<" "<<u<<endl;
            if(i<(int)s.size()-(int)t.size())
            v=(v%u)*10+(s[t.size()+i]-'0');
        }
        //cout<<c<<endl;cout<<r.size()<<endl;
        if( c == '/')
        {
            int flag = 0;
            for(int i = 0; i < (int)r.size(); i++)
            {
                if(r[i]!='0')
                {
                   cout<<r[i];
                    flag = 1;
                }
                else
                {
                    if(flag)  cout<<0;
                }
            }
            cout<<endl;
        }
        if( c == '%')
        {
            cout<<v%u<<endl;
        }
    }
    return 0;
}


你可能感兴趣的:(UVA10494-如果我们返回童年)