首页 > 其他分享 >7.29第三周周一学习总结

7.29第三周周一学习总结

时间:2024-07-29 09:30:09浏览次数:7  
标签:总结 7.29 int 31 30 第三周 ++ m1 d1

洛谷题单

https://www.luogu.com.cn/training/9349

字符串读入

getline(cin,a);
//读入一行包括空格
for(int i=0;i<a.size();i++)
{
	if(a[i]!=' '&&a[i]!='\n')
	ans++;
}

打表和ascl运用

点击查看代码
#include <stdio.h>
int main(void){
  char a[14], mod[12] = "0123456789X"; //先将mod11后的十一个字符存入数组
  gets(a); //输入字符串
  int i, j = 1, t = 0;
  for(i = 0; i < 12; i++) {
        if(a[i] == '-') continue; //字符串为分隔符‘-’时跳过此次循环进入下一次循环
    t += (a[i]-'0')*j++; //t储存 第j个  数字  * j 的和
  }
  if(mod[t%11] == a[12]) printf("Right");
  else {
      a[12] = mod[t%11]; //若识别码错误,则赋正确的识别码,然后输出
      puts(a);
  }
  return 0;
}

统计单词个数

重点

1.getline(cin,a)
2.tolower(a[i]);
3. a=' '+a+' ';(只统计独立单词的思维转化)
4.b.find(a)!=string::npos(find的运用)

点击查看代码
#include <iostream>
#include <string>
//命名空间
using namespace std;
int main(){
    //定义两个字符串
    string a;
    string b;
    //用string库,调用getline, 直接读入一整行
    getline(cin,a);
    getline(cin,b);
    //转换大小写,可以都转换为大写,或者小写
    for (int i=0;i<a.length();++i){
        a[i]=tolower(a[i]);
    }
    for (int i=0;i<b.length();++i){
        b[i]=tolower(b[i]);
    }
    //因为连起来的不算,所以要在前后加几个空格,一定要是同样多的,同量减同量,等于同量
    a=' '+a+' ';
    b=' '+b+' ';
    //先看看会不会找不到,用a.find()和string::npos
    if (b.find(a)==string::npos){
        cout<<-1<<endl;
    }
    //如果找得到
    else {
        int alpha=b.find(a);
        int beta=b.find(a),s=0;//计数器初始化为0
        while (beta!=string::npos){
            ++s;//计数器
            beta=b.find(a,beta+1);
        }
        cout<<s<<" "<<alpha<<endl;//输出第一个和总共有几个
    }
    //函数返回值为0,结束整个程序
    return 0;
}

判断两个日期间回文串的个数

重点

1.月份打表
2.思维转化,枚举月日。再看是否合理
3.朴素算法: 依次枚举,日满月满归一

技巧
#inlcude<bits/stdc++.h>
using namespace std;
int i,j,n,m,a,b,c,sum,ans;
int s[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int main()
{
    scanf("%d%d",&n,&m);
    for (i=1;i<=12;i++)//枚举月和日 
        for (j=1;j<=s[i];j++)
        {
            c=(j%10)*1000+
              (j/10)*100+
              (i%10)*10+
              (i/10);//算出前四位。
            sum=c*10000+i*100+j;//算出整个日期 
            if (sum<n||sum>m) continue;
            ans++;//统计 
        }
    printf("%d",ans);
    return 0;
}
朴素算法
#include <bits/stdc++.h>
using namespace std;
int y1,m1,d1,y2,m2,d2,sum;
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//存每个月的天数(2月是没用的)
bool check()  
{  
    return (y1<y2)||((y1==y2&&m1<m2)||(y1==y2&&m1==m2&&d1<=d2));
	//首先,只要现在的年份小于结束年份就一定可以继续循环;然后,如果现在的年份和结束年份相等,且月份小于结束年份也可以循环;最后,只有天数不同,就必须现在的天数小于结束天数。  
}  
int r(int x)  
{  
    return ((x%4==0&&x%100!=0)||(x%400==0))?29:28;//判断2月的天数  
}  
bool palindrome(int y,int m,int d)  
{  
    char s[8];  
    int t=y*10000+m*100+d;//将它重新组成日期  
    sprintf(s,"%d",t);//转换为字符  
	//可以替换为string s=to_string(t);
    for(int i=0;i<4;i++)  
        if(s[i]!=s[8-i-1])  
            return false;  
    return true;//判断回文  
}  
int main()  
{  
    int t1,t2;  
    cin>>t1>>t2;  
    y1=t1/10000; m1=t1/100%100; d1=t1%100;//分离出年份月份和日数  
    y2=t2/10000; m2=t2/100%100; d2=t2%100;  
    while(check())//判断是否枚举完  
    {  
        bool f=1;//f用于看是否一已经进行过日期更新  
        if(palindrome(y1,m1,d1))//原谅我用这么长的单词装逼  
            sum++;  
        if((m1==2&&d1==r(y1))||(m1!=2&&d1==day[m1]))//一个月完了  
        {  
            m1++;  
            d1=1;  
            f=0;  
        }  
        if(m1==13)//一年完了  
        {  
            y1++;  
            m1=1;  
            d1=1;  
            f=0;  
        }  
        if(f)//如果月没有结束,就直接加天数即可  
            d1++;  
    }  
    cout<<sum<<endl;  
    return 0;  
}

标签:总结,7.29,int,31,30,第三周,++,m1,d1
From: https://www.cnblogs.com/hoshino-/p/18329369

相关文章

  • Python逆向总结(Python反编译)
    目录第一种:直接反编译型第二种:打包成exe的py文件第三种: 给pyc字节码(类汇编形式)第四种:加花的pyc内容参考第一种:直接反编译型除了直接获得题目内容的python文件外,出题人也可以稍微加工一点点,给出题目python文件所对应的pyc文件,即python的字节码。PYC文件的定义pyc......
  • C/C++ 头文件注意事项总结
    C/C++头文件在编程中扮演着至关重要的角色,它们用于声明函数、类、宏、常量等,使得这些声明可以在多个源文件中共享。然而,在使用头文件时,需要注意一些关键事项以避免编译错误、提高代码的可维护性和可读性。以下是一些关于C/C++头文件使用的注意事项:1.防止头文件重复包含头文......
  • 24.07.28 周总结 (kotlin加深 + Android studio 学习)
    Kotlin学习子类的属性覆盖AndroidstudioAI解决问题......
  • Verilog连续赋值、过程赋值、过程连续赋值总结
    最近总是遇到systemverilog的赋值问题,查看了一下手册发现SV的赋值方式总的还是继承了verilog的赋值方式,而且verilog赋值方面的资料比较多,所以就写了先写一篇关于verilog的赋值总结。连续赋值连续赋值就是一旦赋值,输出将随输入改变而变化,一旦修改输入则立刻体现在输出上。input......
  • 第三周周报总结
    :::本周学了很多东西,感觉以前学的太少了,字符串哈希,二分图,拓扑展开还特意细化了一些思维dp和压缩dp,感觉简单dp应该可以很快写出来周内比赛其实主要是wa太多了或者是出太慢,过题没问题,后面刷题提升以下是比赛补题:SMUSummer2024ContestRound6-whatdo+-博客园(cnblogs.com)......
  • 亏钱、踩坑总结的经验之:不要借钱给人做生意!
    借钱给别人做生意,结局往往让人哭笑不得?你真的准备好了吗?在人情与金钱交织的复杂关系中,我们时常会遇到这样的困境:出于好意借钱给亲朋好友创业,却换来了漫长的等待和无尽的沉默。看看你有没有类似的经历,借钱给亲戚做生意,几年后才得以收回,期间不仅没有利息,连基本的沟通都显得尴......
  • 周总结
    这一周打了不少比赛,收获真的不少,其中印象最为深刻的还是大家上去讲题,了解到不同的思路,和做题的技巧与思维方式,值得我好好去听和学习。这一周也在学习动态规划,真的不简单看视频学习有的时候看好几遍才听懂,但是状态比上个星期好了一点,继续加油。https://www.cnblogs.com/dontian/p......
  • 暑假训练第三周周报
    总体情况感觉自己学的比别人慢?就是补题也补的比较慢,但是这周学了很多新的算法知识,打了几场发现自己的搜索功底还不是很牢固,比如睿抗的最后一题就吃了dfs没练的好的亏,还是要先把搜索的功底给练好了,比赛的dp题还是写不出来,没办法思维那么流畅的写出状态转移方程,而且题单也还没来得......
  • 个人工作述职报告模板PPT转正述职报告通用工作总结汇报范文免费
    不知道怎么写述职报告的同学,可以下载PPT模板,改一改就能用。模板文件一共有几个G,下载可能比较慢,建议选择转存,几秒就能保存全部文件,而且几乎不消耗数据流量。不需要开会员,文件可以免费保存,建议一次选择一个文件夹转存。手机APP保存的文件,可以同步在电脑端查看。 以下是部分述职......
  • 代码随想录算法训练营第49天 | 动态规划总结
    代码随想录算法训练营第天|647.回文子串https://leetcode.cn/problems/palindromic-substrings/description/代码随想录https://programmercarl.com/0647.回文子串.html#思路516.最长回文子序列https://leetcode.cn/problems/longest-palindromic-subsequence/代码随想录......