【华为SO挑战赛】输入若干个整数,输出其中能呗这些整数中其他整数整除的哪些整数
2014-09-20 16:57
211 查看
#include<iostream> #include<string> #include<algorithm> using namespace std; int main() { char str[1000]; int num[1000]; gets(str); int count=0; for (int i = 0; i <strlen(str); i+=2) { for (int j = i+2; j <strlen(str); j+=2) { if(((str[i]-'0')%(str[j]-'0'))==0) { num[count]=str[i]-'0'; count++; break; } } } sort(num,num+count); for (int i = 0; i < count-1; i++) { cout<<num[i]<<" "; } cout<<num[count-1]; }
以上代码只是适合一位整数:
修改如下:
#include<iostream> #include<string> #include<algorithm> using namespace std; int main() { char str[1000]; int num[1000]; int count=0; cin.getline(str, 1000); int len = strlen(str); int num_i=0; char tmp[20]; int tmp_i=0; for (int i = 0; i < len; ++i) { tmp_i = 0; if(str[i] != ',') { while(str[i] != ',' && str[i] != '\0') { tmp[tmp_i++] = str[i++]; } tmp[tmp_i] = '\0'; num[num_i++] = atoi(tmp); count++; } } int res[1000]; int n=0; for (int i = 0; i < count; ++i) { for (int j = 0; j < count; ++j) { if(0==(num[i]%num[j]) && i!=j) { res[n++]=num[i]; break; } } } sort(res,res+n-1); for (int i = 0; i < n; i++) { cout<<res[i]<<" "; } cout<<endl; return 0; }
相关文章推荐
- 华为OJ平台试题 —— 数组:输入n个整数,输出其中最小的k个
- 华为OJ基础篇-输入n个整数,输出其中最小的k个
- 输入20个整数,输出其中能被数组中其它元素整除的那些数组元素
- 【华为OJ】输入n个整数,输出其中最小的k个
- 编写程序:从键盘上输入若干个整数(以输入-1作为结束标识),输出这些数中的最大值和最小值,要求编写一个函数实现最大值和最小值的求取。
- 华为oj: 输入n个整数,输出其中最小的k个
- 华为OJ——输入n个整数,输出其中最小的k个
- 华为OJ——输入n个整数,输出其中最小的k个
- 输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一数组a中。统计共有多少个整数,并输出这些数。
- Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。 Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。 Output 对于每组
- 华为(9)输入n个整数,输出其中最小的k个
- 华为OJ题目(二十一):输入n个整数,输出其中最小的k个
- [华为]输入n个整数,输出其中最小的k个
- C输入一个字符串,将其中连续的数字做为一个整数存放在一个整形数组中,统计其中数字的个数并输出这些整数。
- 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数.输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,
- 华为oj 输入n个整数,输出其中最小的k个
- C++输入n(n<100)个整数,找出其中最大的数,将它与最前面的数交换后输出这些数
- [华为OJ--C++]040-输入n个整数,输出其中最小的k个
- 输入n个整数,输出其中最小的k个——来自华为OJ平台测试基础篇
- 华为OJ——输入n个整数,输出其中最小的k个