A1132 Cut Integer (20分)

一、技术总结

  1. 题意是理解上给定义一个数字m(假设有4位),让你分割成两块数字A(前两位)和B(后两位),然后判断m/(A*B)能否整除,如果能输出Yes否则输出No。
  2. 两个点,一个数字怎么分割,一个数字判断。
  3. 分割首先判断出数字的位数,然后再使用取余和整除来得到A和B;再就是判断了,这里有个地方需要注意,可能出现m = 4000的情况,这样的情况直接输出为No,如果再进行判断可能出现浮点错误,即分母为0。
  4. 还有就是pow(x, y)指数函数,输出结果为double型,然后取余%必须满足两个操作数都是整型,否则会报错。

二、参考代码

参考一:
#include<iostream>
#include<cmath>
using namespace std;
bool test(int num){
	int temp = num, A, B;
	int cnt = 0;
	while(num > 0){
		num /= 10;
		cnt++;
	}
	A = temp/(pow(10, cnt/2));
	B = temp%(int)(pow(10, cnt/2));
	if(A * B != 0 && temp%(A*B) == 0) return true;
	else return false;
}
int main(){
	int n;
	scanf("%d", &n);
	for(int i = 0; i < n; i++){
		int num;
		scanf("%d", &num);
		if(test(num)) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
} 

参考二:
#include <iostream>
using namespace std;
int main() {
    int n, num;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &num);
        string s = to_string(num);
        int len = s.length();
        int a = stoi(s.substr(0, len/2));
        int b = stoi(s.substr(len/2));
        if (a * b != 0 && num % (a * b) == 0)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}
posted @ 2020-06-11 22:21  睿晞  阅读(140)  评论(0编辑  收藏  举报