1、数字放大
给定一个整数序列以及放大倍数x,将序列中每个整数放大x倍后输出。
时间限制:1000
内存限制:65536
输入
包含三行: 第一行为N,表示整数序列的长度(N ≤ 100); 第二行为N个整数(不超过整型范围),整数之间以一个空格分开; 第三行包含一个整数(不超过整型范围),为指定的整数x。
输出
N个整数,为原序列放大之后的序列,整数之间以一个空格分开。
样例输入
3
1 5 7
2
样例输出
2 10 14
提示
注意答案的数据范围
#include<bits/stdc++.h>
using namespace std;
long long a[105];
int main(){
long long n , x;
cin >> n;
for(int i = 0;i < n;i++){
cin >> a[i];
}
cin >> x;
for(int i = 0;i < n;i++){
cout << a[i] * x << " ";
}
return 0;
}
2、单词倒排
编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。
时间限制:10000
内存限制:65536
输入
输入为一个字符串(字符串长度至多为100)。
输出
输出为按要求排序后的字符串。
样例输入
I am a student
样例输出
student a am I
//解法1
#include <iostream>
using namespace std;
int main()
{
string str, res;
while (cin >> str)
res = str + ' ' + res;
cout << res;
return 0;
}
//解法2
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<string> word_list;
string word;
while(cin>>word)
word_list.push_back(word);
for(int i=word_list.size()-1;i>=0;i--) cout<<word_list[i]<<" ";
return 0;
}
3、计算矩阵边缘元素之和
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。
时间限制:10000
内存限制:65536
输入
第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开。 接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。
输出
输出对应矩阵的边缘元素和
样例输入
3 3
3 4 1
3 7 1
2 0 1
样例输出
15
#include<iostream>
using namespace std;
int i,j;
#define A 100+5
int main()
{
int m,n;
int sum=0;
cin>>m>>n;
int a[A][A];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cin>>a[i][j];
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(j==0||i==0||j==n-1||i==m-1)
{
sum+=a[i][j];
}
}
}
cout<<sum<<endl;//对于循环每个元素只会遍历一遍,所以不需要减去重复
return 0;
}
4、奇数单增序列
给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。
时间限制:1000
内存限制:65536
输入
共2行: 第1行为 N; 第2行为 N 个正整数,其间用空格间隔。
输出
增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。
样例输入
10
1 3 2 6 5 4 9 8 7 10
样例输出
1,3,5,7,9
#include<bits/stdc++.h>
using namespace std;
int a[505];
int main(){
int n;
int ans = 0;
cin >> n;
for(int i = 0;i < n;i++){
cin >> a[i];
}
sort(a + 0 , a + n);
for(int i = 0;i < n;i++){
if(a[i] % 2 != 0){
if(ans == 1){
cout<<",";
}
cout << a[i];
ans = 1;
}
}
return 0;
}
5、实数加法
求两个实数相加的和。
题目中输入输出里出现的浮点数都有如下的形式: P1P2...Pi.Q1Q2...Qj。对于整数部分,P1P2...Pi是一个非负整数且当整数部分不为0时,P1不等于0;对于小数部分,Qj不等于0。
时间限制:1000
内存限制:65536
输入
2行,每行是一个加数。每个加数的长度不超过100。
输出
一行,即相应的和。输出保证一定是一个小数部分不为0的实数。
样例输入
0.111111111111111111111111111111
0.111111111111111111111111111111
样例输出
0.222222222222222222222222222222
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {
string a, b; cin >> a >> b;
int az = a.find(".");//a 的整数部分长度
int bz = b.find(".");
int ax = a.length() - az - 1;//a 的小数部分长度
int bx = b.length() - bz - 1;
int z, x;//整数、小数部分的最长长度
az > bz ? z = az : z = bz;
ax > bx ? x = ax : x = bx;
string saz = a.substr(0, az);//a 的整数部分
string sax = a.substr(az + 1);//a 的小数部分
string sbz = b.substr(0, bz);
string sbx = b.substr(bz + 1);
while (saz.size() != z)//整数部分补零
saz = "0" + saz;
while (sbz.size() != z)
sbz = "0" + sbz;
while (sax.size() != x)//小数部分补零
sax = sax + "0";
while (sbx.size() != x)
sbx = sbx + "0";
int c = 0;
string xiao = "", zheng = "";
for (int i = x - 1; i >= 0; i--) {//字符转 int :char -‘0’;int 转字符:4 + ‘0’
xiao += ((c + (sax[i] - '0') + (sbx[i] - '0')) % 10 + '0');
c = (c + (sax[i] - '0') + (sbx[i] - '0')) / 10;
}
for (int i = z - 1; i >= 0; i--) {
zheng += ((c + (saz[i] - '0') + (sbz[i] - '0')) % 10 + '0');
c = (c + (saz[i] - '0') + (sbz[i] - '0')) / 10;
}
if(c!=0)
zheng += (c + '0');
int k;//小数部分去零
for (k=0;k<xiao.length();k++)
if (xiao[k] != '0')
break;
reverse(zheng.begin(), zheng.end());
cout << zheng << ".";
for (int i = xiao.length() - 1; i >= k; i--)
cout << xiao[i];
cout << endl;
system("pause");
}