hihocoder编程练习赛54

今天参加了hihocoder的·编程练习赛,总共四道,a了前两道,第三题20。

先看题吧。

描述

给定一个真分数P/Q(P < Q),请你求出它的小数部分都包括0~9中的哪些数字。  

例如1/2=0.5,只包含数字5;1/3=0.33333……,只包含数字3,1/7=0.142857142857……,包含数字124578。

输入

两个整数P和Q,1 ≤ P < Q ≤ 1000000

输出

从小到大输出小数部分出现的所有数字

样例输入

13 123

样例输出

01569

这题挺简单的,分数都是循环小数。直接做就好了。

#include<bits/stdc++.h>
using namespace std;
int p,q,arr[10] = {0};
int main()
{
    cin >> p >> q;
    p = p * 10;
    int temp = p;
    for(int i = 0;i < q - 1;++i)
    {
        int ans = temp / q;
        arr[ans] = 1;
        temp = temp % q * 10;
    }
    for(int i = 0;i < 10;++i)
        if(arr[i])
            cout << i;
    return 0;
}

第二题

描述

愚人节那天,小Ho在小Hi的一个回文字符串中添加了一个字符。你能帮助小Hi找到被添加的是第几个字符吗?

输入

一个只包含小写字母的字符串S。

对于70%的数据,|S| ≤ 1000  

对于100%的数据,|S| ≤ 500000

输出

输出一个整数K,表示删除第K(从1开始计数)个字符后,S会变成一个回文字符串。  

数据保证有解。如果有多个解,输出其中K最小的。

样例输入

aaba

样例输出

1

这题也不难。直接看代码吧

#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
    cin >> s;
    int i = 0,j = s.length() - 1,temp = 0;
    while(i < j)
    {
        if(i > 0)
        {
            if(s[i] != s[i - 1])
                temp = i;
        }
        if(s[i] != s[j])
            break;
        ++i;
        --j;
    }
    cout << temp + 1;
    return 0;
}

感觉前两题比以前的题简单,第三题还没想出,做出了再说吧。

点赞