PAT 1132 Cut Integer[简单]
1132 Cut Integer(20 分)
Cutting an integer means to cut a K digits lone integer Z into two integers of (K/2) digits long integers A and B. For example, after cutting Z = 167334, we have A = 167 and B = 334. It is interesting to see that Z can be devided by the product of A and B, as 167334 / (167 × 334) = 3. Given an integer Z, you are supposed to test if it is such an integer.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (≤ 20). Then N lines follow, each gives an integer Z (10 ≤ Z <231). It is guaranteed that the number of digits of Z is an even number.
Output Specification:
For each case, print a single line Yes
if it is such a number, or No
if not.
Sample Input:
3
167334
2333
12345678
Sample Output:
Yes
No
No
题目大意:给出一个数n,它的位数是K(输入的一定是偶数),那么将前K/2位与后K/2位分开表示为m和t,判断n/(m*t)之后是不是整数。
//看完这道题就感觉简单极了,但是做了提交之后出现了两个错误
//这个是错误理解:给出一个数n,它的位数是K(输入的一定是偶数),那么将前K/2位与后K/2位分开表示为m和t,判断n/m/t==K/2,不能出现浮点数的情况哦。
//看完这道题就感觉简单极了,但是做了提交之后出现了两个错误
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin>>n; int x; for(int i=0;i<n;i++){ cin>>x; int m=x,ct=0; while(m!=0){ m/=10; ct++; } ct/=2; vector<int> vt; m=x; for(int j=0;j<ct;j++){ vt.push_back(m%10); m/=10; } int k=vt[vt.size()-1]; for(int j=vt.size()-2;j>=0;j--){ k=k*10+vt[j]; } if(k==0){ cout<<"No"<<'\n';continue; } double t=1.0*x/k/m; if(t==1.0*ct) cout<<"Yes"<<'\n'; else cout<<"No"<<'\n'; } return 0; }/** 1 678900, 这个用例就不行,因为它是/后四舍五入导致的表面上的答案正确。 **/
1.浮点错误,搜索了一下发现是,/0,或者%0.
2.解决了之后,再次提交全部样例是答案错误。
//看完讲解,忽然发现自己理解错题意了,
现在答案正确了:我的AC:
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin>>n; int x; for(int i=0;i<n;i++){ cin>>x; int m=x,ct=0; while(m!=0){ m/=10; ct++; } ct/=2; vector<int> vt; m=x; for(int j=0;j<ct;j++){ vt.push_back(m%10); m/=10; } int k=vt[vt.size()-1]; for(int j=vt.size()-2;j>=0;j--){ k=k*10+vt[j]; } if(k==0){ cout<<"No"<<'\n';continue; } //double t=1.0*x/k/m; if(x%(k*m)==0) cout<<"Yes"<<'\n'; else cout<<"No"<<'\n'; } return 0; }/** 1 678900, 这个用例就不行,因为它是/后四舍五入导致的表面上的答案正确。 **/
代码来自:https://www.liuchuo.net/archives/4090
#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);//直接使用tosting函数,厉害了。 int len = s.length(); int a = stoi(s.substr(0, len/2));//直接将字符串转换为int 厉害了。 int b = stoi(s.substr(len/2)); if (a * b != 0 && num % (a * b) == 0) printf("Yes\n"); else printf("No\n"); } return 0; }
//真是太简洁了。
1.可以使用so_string函数,直接将int转化为string
2.可以使用stoi直接将string转换为int.
//厉害了。
相关文章
- 果与HTC专利和解不简单:或为联合打击三星
- Android开发之一种简单的异步加载图片方法
- 可想实现一个自己的简单jQuery库?(五)
- requireJS简单入门学习
- mysql 重新整理——索引优化explain简单介绍 [八]
- 【ANDROID游戏开发十六】ANDROID GESTURE之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 机器学习笔记 - 使用TensorFlow2和Keras的简单Conv3D示例
- 网络基础——知识生活化会变得如此简单
- 简单工厂模式
- 接口测试脚本如何编写?其实很简单 一分钟教会你
- PAT 1041 Be Unique[简单]
- PAT 1121 Damn Single[简单]
- PAT 1120 Friend Numbers[简单]
- PAT 1144 The Missing Number[简单]
- PAT 1069 The Black Hole of Numbers[简单]
- PAT 1061 Dating[简单]
- PAT 1019 General Palindromic Number[简单]
- PAT 1027 Colors in Mars[简单][注意]
- HarmonyOS鸿蒙学习笔记(3)@Component注解自定义组件简单说明
- 简单的状态机