首页 > 其他分享 >每天一道蓝桥杯 Day2 翻转+阶乘求和

每天一道蓝桥杯 Day2 翻转+阶乘求和

时间:2024-03-08 23:34:44浏览次数:30  
标签:int Day2 long 蓝桥 阶乘 100 翻转

阶乘求和

 

只要后9位的话,那就只考虑后9位!

如何只算后9位?有一个很经典的运算:取模。

回想入门c语言时做过一道题,给定三位数,要求进行数字翻转。

比如给定n,n=123,要翻转成321。

一个做法是令a1=n%10,a2=(n%100)/10,a3=n/100

输出a1*100+a2*10+a3即可。

所以遇到求一个很大的值除以某数的余数,或者只问后几位是什么时,都可以考虑取模运算。

有一道蓝桥杯的斐波那契题也是这种思想:https://blog.csdn.net/qq_44619221/article/details/104300440

ac代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
    int a=1;
    int ans=0;
    for(int i=1;i<=100;i++){
        a*=i;
        a%=10000000000000;
        ans+=a%(1000000000);
        ans%=1000000000;
        //cout<<i<<" #"<<(a%(1000000000))<<endl;
    }
    cout<<ans<<endl;
}

 

翻转

简单来说就是每次合法的操作就是每次可以把101变成111,或者010变成000,求s变成t的最小操作数。

最开始想得有点复杂,比如我修改这个位置,是否会影响到其他位,从而导致答案不优?

但是手算了几个样例(自己出几个小样例,然后手算,这是一个很不错的方法,可以帮助发现不少规律~)

发现不用担心这种情况,每次修改和其他位都是独立的

直接模拟即可

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
    int n;
    cin>>n;
    while(n--){
        string t,s;cin>>t>>s;
        int l=s.length();
        int flag=1,ans=0;
        for(int i=0;i<l;i++){
            if(s[i]!=t[i]){
                if(i==0||i==l-1) flag=0;//如果是首位和末位就一定不合法
               // cout<<s[i-1]<<" "<<s[i]<<" "<<s[i+1]<<endl;
                if(s[i]=='1'){
                    if( s[i-1]!='0' || s[i+1]!='0' ) flag=0;//判断能否翻转
                    else ans++;
                }
                else {
                    if( s[i-1]!='1' || s[i+1]!='1' ) flag=0;
                    else ans++;
                }
            }
        }
        if(flag) cout<<ans<<endl;
        else cout<<-1<<endl;
    }
}

  

 

标签:int,Day2,long,蓝桥,阶乘,100,翻转
From: https://www.cnblogs.com/liyishui2003/p/18062064

相关文章

  • P8630 [蓝桥杯 2015 国 B] 密文搜索
    网站:https://www.luogu.com.cn/problem/P8630代码如下:主要是用了map的思想#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<string>#include<string.h>#include<iomanip>#include<map>#incl......
  • 第十二届蓝桥杯填空题
    目录试题A:卡片法一、暴力测试法法二、另解试题B:直线题解试题C:货物摆放法一、暴力法二、在遍历之前筛掉不是n的因数的试题D:路径法一、改进的迪杰斯特拉算法法二、动态规划试题E:回路计数法一、试题A:卡片分析:11年是从1到2020,2出现的次数,这个题感觉反过来了,求1到多少0-9出现的次数......
  • 2023年第十四届蓝桥杯大赛软件类省赛Java大学B组真题
    2023年第十四届蓝桥杯大赛软件类省赛Java大学B组真题C.数组分割思路:因为最后要是分为2组偶数。由于偶数+偶数=偶数,奇数+奇数=偶数。那么我们的奇数个数一定要是偶数个。如果奇数个数为奇数个那直接就不行了,答案是0。如果奇数的个数是偶数的话,假设偶数n个,奇数m个。\(C_{n}^{0}+......
  • 每天一道蓝桥杯Day1 分考场(dfs+结论)
    题意:这道题第一眼咋看以为是图论,但是要抽象成图论的话就会变成:给定一个无向图,要求对点染色,使得任意相邻点之间颜色不能相同,试问最少的颜色数是多少?发现转化成图论后好像也没有什么图论算法可以解决,这个转化不是很有效。往往不知道怎么下手时可以试着考虑极端情况,比如考虑上界......
  • P8686 [蓝桥杯 2019 省 A] 修改数组
    备赛蓝桥杯和icpc的习题:一道并查集的题目>#include<iostream>>#include<vector>>#include<algorithm>>#include<math.h>>#include<string>>#include<string.h>>#include<iomanip>>#include<map>&g......
  • Java学习总结 Day2
    Java学习总结Day2构造器publicclassperson{//一个类默认会有一个方法(构造器)Stringname;intage;//实例化初始值/*1.使用new必须有构造器,本质是调用构造器*2.初始化值*3.快捷键alt+insert*/publicperson(){}//有......
  • 2020蓝桥杯c语言省赛B组
    2020蓝桥杯省赛B组1.回文日期考点枚举+翻转完整代码#include<bits/stdc++.h>usingnamespacestd;boolrn(intt){ if((t%4==0&&t%100!=0)||t%400==0)returntrue; returnfalse;}注意:是整体翻转不是年月日变成日月年!boolf(intn,inty,intr){inth=n*10000+......
  • [CISCN2019 华北赛区 Day2 Web1]Hack World 1 盲注
    页面打开如上获取到信息flag在flag表中的flag列中尝试注入发现对用户的输入进行了限制使用burp进行fuzz测试其中535代表该页面对该条件进行了过滤其中括号并没有被过滤所以可以利用括号来代替空格进行盲注已知f的ascii码为102构筑等式(select(ascii(mid(flag,1,1)......
  • 第十一届蓝桥杯试题B:寻找2020
    目录题目题解:暴力题目题解:暴力需要知道文件的操作;发现2020的行列标变化li=[]#创建一个空列表用于存储读取的文本内容withopen(r'2020.txt','r')asfp:#打开名为'2020.txt'的文件,并使用文件句柄fpforlineinfp.readlines():#逐行读取文件内容......
  • 第十一届蓝桥杯:数字三角形
    目录题目暴力:最大路径和题解:动态规划题目暴力:最大路径和n=int(input())#输入数塔的行数#创建一个二维数组a来表示数塔,初始值都为0a=[[0]*(n+1)for_inrange(n+1)]#从第1行开始逐行读取输入,并计算最大路径和foriinrange(1,n+1):forjinrange(1,i......