头像

李三岁




在线 


最近来访(2)
用户头像
题目一样
用户头像
影宇z


李三岁
13秒前

题目描述

将所有正整数连在一起,组成一个无限长的字符串 123456789101112131415…
请你输出该字符串的第 n 位字符。

字符位次从 1 开始计数。

输入格式
第一行包含整数 T,表示共有 T 组测试数据。

每组数据占一行,包含一个整数 n。

输出格式
每组数据输出占一行,输出第 n 位字符。

数据范围
本题共两个测试点。
小测试点,如样例所示。
大测试点满足:1≤T≤1000,1≤n≤1000。

样例

输入样例:
2
3
11
输出样例:
3
0

解析

头文件#include[HTML_REMOVED]
stringstream ss;
ss<<x;//这串代码将int转化为string
总的来说就是将前1000位数储存在string中,查找就直接输出位数减1就好了。

C++ 代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    string a="";
    int x=1;
    while(a.size()<=1000)
    {
        stringstream ss;
        ss<<x;
        a+=ss.str();
        x++;
    }
    while(t--)
    {
        int n;
        cin>>n;
        cout<<a[n-1]<<endl;
    }
    return 0;
}


活动打卡代码 AcWing 4079. 数字串

李三岁
4分钟前
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    string a="";
    int x=1;
    while(a.size()<=1000)
    {
        stringstream ss;
        ss<<x;
        a+=ss.str();
        x++;
    }
    while(t--)
    {
        int n;
        cin>>n;
        cout<<a[n-1]<<endl;
    }
    return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



题目描述

n 个班的小朋友乘大巴去郊游,第 i 个班有 ai 个人。

每隔一段时间就会来一辆空大巴车,每个大巴车可以容纳 m 个小朋友。

已知,在安排乘车时,必须按照 1 班,2 班,…,n 班的顺序,依次安排每个班的小朋友。

同一个班的小朋友必须被安排在同一辆车内。

也就是说,如果当前需要安排 i 班乘坐大巴,而此时大巴剩余的座位数量少于 ai,则让大巴先走,i 班以及后续班级共同等待下一辆大巴到来。

请问,将所有小朋友接走,共需多少辆大巴?

输入格式
第一行包含整数 T,表示共有 T 组测试数据。

每组数据第一行包含两个整数 n,m。

第二行包含 n 个整数 a1,a2,…,an。

输出格式
每组数据输出一行结果,表示所需大巴数量。

数据范围
1≤T≤30,
1≤n,m≤100,
1≤ai≤m

样例

输入样例:
2
4 3
2 3 2 1
3 4
1 2 1
输出样例:
3
1

解析

令一个x表示小朋友数目,将每个班的小朋友数目相加,当小朋友的数目大于m时,就能发车了所以ans,但这个时候由于x多加了一个a(表示每个班小朋友数)才会大于m,但是这个a坐的是下一趟车,所以令x等于这个a,再与后面的a相加。
由于到最后可能存在少于m的情况不能进行判断(就是最后不管剩下多少小朋友都需要一辆车,前提是要剩下),所以0<x<=m还要ans
.


C++ 代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n,m;
        cin>>n>>m;
        int ans=0,x=0,a;
        for(int i=1;i<=n;i++)
        {
            cin>>a;
            x+=a;
            if(x>m)
            {
                ans++;
                x=a;
            }
            if(i==n&&0<x<=m)ans++;
        }
        cout<<ans<<endl;
    }
    return 0;
}



李三岁
12天前

题目描述

给定一个由 n 个小写字母构成的字符串。

现在,需要删掉其中的一些字母,使得字符串中不存在连续三个或三个以上的 x。

请问,最少需要删掉多少个字母?

如果字符串本来就不存在连续的三个或三个以上 x,则无需删掉任何字母。

样例

输入
10
xxxxxxxxxx
输出
8

算法1

(暴力枚举) $O(n^2)$

时间复杂度

o(n)

C++ 代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string a;
    cin>>a;
    int x=0,y=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]=='x')x++;
        if(x==3)y++,x--;
        if(a[i]!='x')x=0;
    }
    cout<<y;
    return 0;
}