A1132 Cut Integer (20分)
一、技术总结
- 题意是理解上给定义一个数字m(假设有4位),让你分割成两块数字A(前两位)和B(后两位),然后判断m/(A*B)能否整除,如果能输出Yes否则输出No。
- 两个点,一个数字怎么分割,一个数字判断。
- 分割首先判断出数字的位数,然后再使用取余和整除来得到A和B;再就是判断了,这里有个地方需要注意,可能出现m = 4000的情况,这样的情况直接输出为No,如果再进行判断可能出现浮点错误,即分母为0。
- 还有就是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;
}
作者:睿晞
身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
曾有一个业界大牛说过这样一段话,送给大家:
“华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.