<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BatmannLv的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/BatmannLv</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BatmannLv]]></copyright><item><title><![CDATA[1049 数列的片段和 (20 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121974164</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121974164</guid><author>BatmannLv</author><pubDate>Thu, 16 Dec 2021 14:45:13 +0800</pubDate><description><![CDATA[Notice:
1.一开始直接写嵌套循环，发现超时。所以需要用数学方法去求解。
	后参考别人博客，发现其规律：
	
	先观察一个数，例如，对于N=4的数列中序列号为3的数所在的片段如下：
	   (起点为1)[(1,2,3),(1,2,3,4)];
	   (起点为2)[(2,3),(2,3,4)];
	   (起点为3)[(3),(3,4)];
	可以看出来，包含第i个数的片段中，片段的起始可以是1,2,3..i，一共i种选择，
	(如包含3的片段有123三种选择) 片段的结尾可以是i,i+1,...n.]]></description><category></category></item><item><title><![CDATA[1044 火星数字 (20 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121706291</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121706291</guid><author>BatmannLv</author><pubDate>Fri, 03 Dec 2021 20:18:19 +0800</pubDate><description><![CDATA[转载：https://www.liuchuo.net/

Notice
hash + 进制的计算

#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

string a[13] = {"tret","jan", "feb","mar", "apr", "may", "jun", 
                    "jly", "aug", "sep", "oct", "nov", "dec"}; //把tre]]></description><category></category></item><item><title><![CDATA[1043 输出PATest (20 分)（C++）]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121700900</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121700900</guid><author>BatmannLv</author><pubDate>Fri, 03 Dec 2021 20:10:39 +0800</pubDate><description><![CDATA[Notice
Hash散列

#include &lt;iostream&gt;

using namespace std;
int main(){
    int map[128] = {0};
    string s;
    cin &gt;&gt; s;
    for(int i = 0;i &lt; s.length();i++){ //每个字母的个数存入map中
        map[s[i]]++;
    }
    //输出
    while(map['P'] &gt; 0 ||.]]></description><category></category></item><item><title><![CDATA[1042 字符统计 (20 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121700257</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121700257</guid><author>BatmannLv</author><pubDate>Fri, 03 Dec 2021 15:42:41 +0800</pubDate><description><![CDATA[Notice
Hash散列

#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cctype&gt;
using namespace std;
int main(){
    int a[40] = {0}; //保存36个小写字母的个数
    string s;
    getline(cin,s); //字符串有空格，不能直接用cin
    char c;
    for(int i = 0;i &lt; s.length.]]></description><category></category></item><item><title><![CDATA[1041 考试座位号 (15 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121696032</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121696032</guid><author>BatmannLv</author><pubDate>Fri, 03 Dec 2021 12:36:50 +0800</pubDate><description><![CDATA[参考：https://www.liuchuo.net/

Notice
先保存再查找元素

#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;
string a[1005][2];
int main(){
    string s;
    int n,test,k;
    cin &gt;&gt; n;
    for(int i = 0;i &lt; n;i++){  //保存数据,试坐号为行下标，准考证号和考试]]></description><category></category></item><item><title><![CDATA[1040 有几个PAT (25 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121695846</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121695846</guid><author>BatmannLv</author><pubDate>Fri, 03 Dec 2021 12:19:41 +0800</pubDate><description><![CDATA[转载：https://www.liuchuo.net/

Notice
1.每次扫描到A，用这个A组成的PAT刚好是A前面的P数量*A后面T的数量.
2.因为整型的输出范围是0~2147483648.countp*countt有可能溢出，所以需要对成绩2取模，
  每次结果的和也有可能溢出，所以需对每次结果和取模，总之取两次模的目的在于防止数据溢出。

#include &lt;iostream&gt;

using namespace std;
int main(){
    string s;
    ]]></description><category></category></item><item><title><![CDATA[1039 到底买不买 (20 分)（C++）]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121688020</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121688020</guid><author>BatmannLv</author><pubDate>Thu, 02 Dec 2021 22:23:29 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
using namespace std;
int main (){
    int v1[256] = {0};    //摊主
    int v2[256] = {0};    //小红
    string s1;
    string s2;
    cin &gt;&gt; s1 &gt;&gt; s2;

    for(int i = 0;i &lt; s1.length();i++) {v1[s1[i]]++;}
    for(int..]]></description><category></category></item><item><title><![CDATA[1038 统计同成绩学生 (20 分)（C++）]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121686921</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121686921</guid><author>BatmannLv</author><pubDate>Thu, 02 Dec 2021 21:25:22 +0800</pubDate><description><![CDATA[Notice
Hash散列

#include &lt;iostream&gt;

using namespace std;
int a[110] = {0}; //开一个Hash表，记录各个分数的人数
int main (){
    int n,k,score;
    cin &gt;&gt; n;
    for(int i = 0;i &lt; n;i++){
        cin &gt;&gt; score;
        a[score]++;
    }
    cin &gt;&g.]]></description><category></category></item><item><title><![CDATA[1037 在霍格沃茨找零钱 (20 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121686418</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121686418</guid><author>BatmannLv</author><pubDate>Thu, 02 Dec 2021 21:12:02 +0800</pubDate><description><![CDATA[Notice:
1.不同进制的加减运算
2.swap()没写头文件，但我查资料发现swap()应该在 &lt;string_view&gt;头文件里
		http://www.cplusplus.com/reference/algorithm/

#include &lt;iostream&gt;
#include &lt;cstdio&gt;
using namespace std;

int main(){
    int g1,g2,g3,s1,s2,s3,k1,k2,k3;
    scanf(".]]></description><category></category></item><item><title><![CDATA[1036 跟奥巴马一起编程 (15 分)（C++）]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121685366</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121685366</guid><author>BatmannLv</author><pubDate>Thu, 02 Dec 2021 20:14:52 +0800</pubDate><description><![CDATA[Notice:
四舍五入 具体参考
https://blog.youkuaiyun.com/BatmannLv/article/details/121642463?spm=1001.2014.3001.5502

#include &lt;iostream&gt;
using namespace std;
int main(){
    int n,row;
    char c;
    cin &gt;&gt; n &gt;&gt; c;
    row = ((1.0 * n / 2) + 0.5); //行数.]]></description><category></category></item><item><title><![CDATA[1035 插入与归并 (25 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121682578</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121682578</guid><author>BatmannLv</author><pubDate>Thu, 02 Dec 2021 17:41:17 +0800</pubDate><description><![CDATA[转载自柳诺https://www.liuchuo.net/

#include &lt;iostream&gt;
#include &lt;algorithm&gt;

using namespace std;
int main(){
    //输入
    int a[110],b[100];
    int n;
    cin &gt;&gt; n;
    for(int i = 0;i &lt; n;i++){
        cin &gt;&gt; a[i];
    }
    fo...]]></description><category></category></item><item><title><![CDATA[1034 有理数四则运算 (20 分)（C++）]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121678908</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121678908</guid><author>BatmannLv</author><pubDate>Thu, 02 Dec 2021 15:44:25 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &lt;cmath&gt;

using namespace std;
long long a,b,c,d;
//求最大公约数的子函数(辗转相除法)
long long gcd(long long m,long long n){
    return n ? gcd(n,(m % n)) : m;
    //return n == 0 ? m : gcd(n,(m % n));
}

..]]></description><category></category></item><item><title><![CDATA[1033 旧键盘打字 (20 分)（C++）]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121670209</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121670209</guid><author>BatmannLv</author><pubDate>Thu, 02 Dec 2021 10:31:07 +0800</pubDate><description><![CDATA[Notice:
1.测试点2：先输入s1，s2。并且由于s1可能是空字符串，
          所以不能用cin &gt;&gt; s1 &gt;&gt; s2，因为cin &gt;&gt; s1不接收空串。
          所以s1需要用getline接收（测试点2)。
          
2.关于cin、getline()的区别：
		   简单来说，在接受字符串的时候，
		   cin 遇“空格”、“TAB”、“回车”都结束；
		   getline()可以接收空格并输出。(需包含#in.]]></description><category></category></item><item><title><![CDATA[1032 挖掘机技术哪家强 (20 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121665238</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121665238</guid><author>BatmannLv</author><pubDate>Wed, 01 Dec 2021 21:27:13 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;vector&gt;
using namespace std;

int main(){
    int n,school,score;
    int maxscore = 0,maxschool = 1;
    cin &gt;&gt; n;
    vector&lt;int&gt; v(n);//用数组来保存学校的数据，下标为学校编号，值为总分。
    for(i.]]></description><category></category></item><item><title><![CDATA[1031 查验身份证 (15 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121663743</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121663743</guid><author>BatmannLv</author><pubDate>Wed, 01 Dec 2021 20:47:27 +0800</pubDate><description><![CDATA[Notice
出错的点：
1.char和int类型之间的转换，特别是一开始到最后做比较的时候，我把'X'转换为10，
		再存入int char[]，发现这样有问题。后来直接改为char code[]再和字符进行比较。



我的代码

#include &lt;iostream&gt;
using namespace std;
int main(){
    int n,cnt = 0; //cnt为出错的个数
    int w[20] = {7,9,10,5,8,4,2,1,6,3,7,9,10,..]]></description><category></category></item><item><title><![CDATA[1030 完美数列 (25 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121660166</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121660166</guid><author>BatmannLv</author><pubDate>Wed, 01 Dec 2021 17:28:21 +0800</pubDate><description><![CDATA[two pointers
Notice
思路：
	先对该数列从小到大进行排序（sort()），再从排序后的最小值（即a[0]）开始作为m，
将之后的数值依次作为M，看是否满足条件（ M≤mp），若满足则记录此时的最大值
cnt (cnt 为 j - i + 1;).依次记录下去，找出最大的cnt最后输出。

#include &lt;iostream&gt;
#include &lt;algorithm&gt;

using namespace std;
int main(){
    long long.]]></description><category></category></item><item><title><![CDATA[1029 旧键盘 (20 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121657902</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121657902</guid><author>BatmannLv</author><pubDate>Wed, 01 Dec 2021 16:29:08 +0800</pubDate><description><![CDATA[Notice:
思路：
1.找到坏的键：应该输入字符串s1,实际输入s2.
	所以只需要在s2中依次寻找s1中没有的键值。
2.防止重复输出坏健:利用一个Hash表去判断之前是够有输出过.
思考：
1.这道题属实给我写吐了。。最后测试点4死活过不了。
	最后发现是判断小写字母时候忘加"="号了。
	我的：if(s1[i] &gt; 'a' &amp;&amp; s1[i] &lt; 'z') s1[i] -= 32;
	正解：if(s1[i] &gt;= 'a' &amp;&amp; s1[i] &lt;.]]></description><category></category></item><item><title><![CDATA[1028 人口普查 (20 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121651708</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121651708</guid><author>BatmannLv</author><pubDate>Wed, 01 Dec 2021 11:30:35 +0800</pubDate><description><![CDATA[Notice:
测试点3，cnt为0时候只用输出0即可。否则“格式错误，您的程序输出的格式不符合要求（比如空格和换行与要求不一致）”

#include &lt;iostream&gt;

using namespace std;
int main(){
    int n;
    int cnt = 0;
    string name,birth,maxname,minname,maxbirth,minbirth;
    cin &gt;&gt; n;
    maxbirth = "1814/0.]]></description><category></category></item><item><title><![CDATA[1027 打印沙漏 (20 分)(C++)]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121644208</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121644208</guid><author>BatmannLv</author><pubDate>Tue, 30 Nov 2021 22:15:29 +0800</pubDate><description><![CDATA[Notice


#include &lt;iostream&gt;
using namespace std;
int main(){
    int n;
    char c;
    cin &gt;&gt; n &gt;&gt; c;
    
    //判断能画多少层，单向，(中间一个*为第0层)
    int floor = 0;
    int sum = 1;
    while(sum &lt;= n){
        floor++;
        sum = sum + 2 .]]></description><category></category></item><item><title><![CDATA[1026 程序运行时间 (15 分)（C++）]]></title><link>https://blog.youkuaiyun.com/BatmannLv/article/details/121642463</link><guid>https://blog.youkuaiyun.com/BatmannLv/article/details/121642463</guid><author>BatmannLv</author><pubDate>Tue, 30 Nov 2021 20:55:12 +0800</pubDate><description><![CDATA[Notce:
C++的四舍五入：
	思路：如果直接对一个浮点数取四舍五入，不保留小数部分，那么我们的思路是：正数加上0.5，负数减去0.5。

#include &lt;iostream&gt;
using namespace std;
int round1(double number)
{
    return (number&gt;0.0)?(number+0.5):(number-0.5);
}

或者：

#include &lt;iostream&gt;
#include &lt;cmath&g.]]></description><category></category></item></channel></rss>