AcWing 3446. 整数奇偶排序
题目详情
输入 10 个整数,彼此以空格分隔。
重新排序以后输出(也按空格分隔),要求:
先输出其中的奇数,并按从大到小排列; 然后输出其中的偶数,并按从小到大排列。
输入格式
任意排序的 10 个整数,彼此以空格分隔。
输出格式
按照要求排序后输出,整数之间由空格分隔。
数据范围
输入整数取值范围 [0,100]。
输入样例:
4 7 3 13 11 12 0 47 34 98
输出样例:
47 13 11 7 3 0 4 12 34 98
解题思路
非常简单的一道题目,首先我们将奇数和偶数分别放到两个数组中,进行排序,奇数数组降序,偶数数组升序。让后先输出奇数数组中的所有元素,再输出偶数数组中的所有元素即可。
AC代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
vector<int>a,b;
for(int i=0;i<10;i++)
{
int t;
cin>>t;
if(t%2==0)
{
b.push_back(t);
}
else a.push_back(t);
}
sort(a.begin(),a.end(),cmp);
sort(b.begin(),b.end());
for(int i=0;i<a.size();i++)
{
cout<<a[i]<<" ";
}
for(int i=0;i<b.size();i++)
{
cout<<b[i]<<" ";
}
return 0;
}
3431. skew数
题目详情
在 skew binary 表示中,第 k 位的值 x[k] 表示 x[k]×(2(k+1)−1)x[k]×(2(k+1)−1),k 的取值从0开始。
每个位上的可能数字是 0 或 1,最后面一个非零位可以是 2,且不含前导零。
例如,10120(skew)=1×(25−1)+0×(24−1)+1×(23−1)+10120(skew)=1×(25−1)+0×(24−1)+1×(23−1)+ 2×(22−1)+0×(21−1)=31+0+7+6+0=442×(22−1)+0×(21−1)=31+0+7+6+0=44。
前十个 skew 数是 0、1、2、10、11、12、20、100、1010、1、2、10、11、12、20、100、101 以及 102102。
给定若干 skew 数,请你输出它们的十进制形式。
输入格式
输入包含多组测试数据。
每组数据占一行,包含一个 skew 数。
输出格式
每行输出一个 skew 数的对应十进制形式。
数据范围
保证结果不超过 2^31 -1。
输入样例:
10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
输出样例:
44
2147483646
3
2147483647
4
7
1041110737
解题思路
按照题目的意思一步步做即可,需要注意k和下标的关系,例如10120第一位是1,下标为0,但k=5;
AC代码
#include<iostream>
#include<cmath>
using namespace std;
void change(string s)
{
long long sum = 0;
long long n = s.size();
long long t = n;
for (int i = 0; i < n; i++)
{
sum += (s[i] - '0') * (pow(2, t--) - 1);
}
cout << sum << endl;
}
int main()
{
string s;
while (cin >> s)
{
change(s);
}
return 0;
}