题目来源:牛客网
题一 . 进制转换
描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
输入描述:
输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,输出描述: 输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1 输入:
0xA
0xAA输出:
10
170
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
int main()
{
string s;
while(cin >> s){
int res = 0;
// cout << s<< endl;
for(int i = 2; i <s.size(); i++)
{
int temp = 0;
switch(s[i]){
case 'A': temp = 10; break;
case 'B': temp = 11; break;
case 'C': temp = 12; break;
case 'D': temp = 13; break;
case 'E': temp = 14; break;
case 'F': temp = 15; break;
default:
temp = s[i] - '0';
}
res = res * 16 + temp;
temp = 0;
}
cout << res << endl;
}
return 0;
}
题二 . 质数因子
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
最后一个数后面也要有空格
输入描述: 输入一个long型整数
输出描述: 按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
示例1
输入: 180
输出: 2 2 3 3 5
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int x;
vector<int> res;
while(cin >> x){
for(int i = 2; i <= x; i++)
{
while(x != 1){
if(x % i == 0){
res.push_back(i);
x /= i;
}else{
break;
}
}
}
for(int i = 0; i < res.size(); i++){
cout << res[i] << " ";
}
res.clear();
cout<<endl;
}
return 0;
}
题三 . HJ8 合并表记录
数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
输入描述: 先输入键值对的个数 然后输入成对的index和value值,以空格隔开
输出描述: 输出合并后的键值对(多行)
示例1
输入:
4
0 1
0 2
1 2
3 4
输出:
0 3
1 2
3 4
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int num;
int temp[10000] = {
0};
int index,value;
while(cin >> num){
for(int i = 0; i < num; i++){
cin >> index >> value;
temp[index] += value;
}
for(int i = 0; i < 10000; i++){
if(temp[i] != 0)
cout << i << " "<< temp[i]