1. 题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
最后一个数后面也要有空格
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格
#include <iostream>
#include <cmath>
#include<string>
using namespace std;
string getResult(long ulDataInput);
int main()
{
long int ulDataInput;
cin >> ulDataInput;
cout << getResult(ulDataInput);
return 0;
}
string getResult(long ulDataInput)
{
string s = "";
bool isPrime = true;
int i = 2;
for (; i <= sqrt(ulDataInput); ++i)
{
if (0 == (ulDataInput % i))
{
isPrime = false;
break;
}
}
if (isPrime)
return s += to_string(ulDataInput) + " ";
else
return getResult(i) + getResult(ulDataInput / i);
}
2.题目描述
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
输入描述:
输入一个正浮点数值
输出描述:
输出该数值的近似整数值
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
float num;
cin>>num;
cout<<round(num)<<endl;
return 0;
}
3. 题目描述
数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
输入描述:
先输入键值对的个数
然后输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n;
while(cin >> n){
map<int,int> m;
while(n--){
int key,value;
cin >> key >> value;
if(!m[key]){
m[key] = value;
}
else m[key] += value;
}
for(map<int,int>::iterator it=m.begin();it!=m.end();++it){
cout << it->first << " "<< it->second << endl;
}
}
return 0;
}
4. 题目描述
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
#include<iostream>
using namespace std;
int main()
{
int n;
int a[10] = { 0 };
int num = 0;
cin >> n;
while (n)
{
if (a[n % 10] == 0)
{
a[n % 10]++;
num = num * 10 + n % 10;
}
n /= 10;
}
cout << num << endl;
return 0;
}
5. 题目描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。
输入描述:
输入N个字符,字符在ACSII码范围内。
输出描述:
输出范围在(0~127)字符的个数。
#include<iostream>
#include<set>
using namespace std;
int main()
{
char c;
set<char> s;
while(cin>>c){
if(c>=0 && c<=127){
s.insert(c);
}
}
cout << s.size() <<endl;
return 0;
}