PAT 1132 Cut Integer(20)

来源:互联网 发布:zookeeper java api 编辑:程序博客网 时间:2024/06/01 09:47

题目是真的不难,但是考试的时候不知道因为什么原因一直异常错误,回来重新敲了遍却通过了,心态爆炸。另一个误解的地方就是167334/(167*334)的结果正好是3,就一直以为这个也是条件,结果只要是可以整除就好了。新的c++有了to_string函数可以将整型数据转化为string,调用size方法可以更简洁。此外要注意就是除数为0的情况。

样例输入:

3
167334
2333
12345678

样例输出:

Yes
No
No

#include <cstdio>#include <string>#include <algorithm>#include <iostream>#include <math.h>using namespace std;int trans_str(string s){    int num = 0;    int len = s.length();    for(int i =0 ;i < len; i++){        num += pow(10,len-1-i) * (s[i] - '0');    }    return num;}int main(){    int n;    cin >> n;    string str, cut1, cut2;    while(n--){        cin >> str;        cut1 = str.substr(0,str.length()/2);        cut2 = str.substr(str.length()/2, str.length());        int input_1,input_2,input_3;        input_1 = trans_str(str);        input_2 = trans_str(cut1);        input_3 = trans_str(cut2);        if((input_2*input_3)&& input_1 % (input_2*input_3) == 0){            cout << "Yes\n";        }        else cout << "No\n";    }    return 0;}