春季每日一题

105 阅读1分钟

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开始。

每个位上的可能数字是 01,最后面一个非零位可以是 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;
}