2020.12.14vj补题
A. Lucky Ticket
题意:就是说4与7是幸运数字,用4和7组成的数字也是幸运数字,问所给数字是不是幸运数字
思路:直接敲
代码:

1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<algorithm>
6 using namespace std;
7 int main(){
8 int n;
9 scanf("%d",&n);
10 int a[150];
11 int sum=0,sum1=0,sum2=0;
12 for(int i=1;i<=n;i++){
13 int num=0;
14 scanf("%1d",&num);
15 if(num==4){
16 sum++;
17 if(i<=n/2){
18 sum1+=num;
19 }else{
20 sum2+=num;
21 }
22 }else if(num==7){
23 sum++;
24 if(i<=n/2){
25 sum1+=num;
26 }else{
27 sum2+=num;
28 }
29 }
30 }
31 if(sum==n&&sum1==sum2){
32 printf("YES");
33 }else{
34 printf("NO");
35 }
36 }
B. Lucky Mask
题意:4和7是幸运数字,由4和7组成的数字也是幸运数字,现在有一种新的加密运算,例如给定4567,则其值是47,现在给定a和b,其值是b并且大于a的这个数是多少
思路:反向思维,一个是进行累加运算,一个一个的去对结果,从a开始加一,如果符合就直接输出,二是如果他们得到的加密云算相等就进行输出
wa掉的点:1.总以为是有规律的,其实这样的分类情况有好多,一开始以为只是添加1就行,并不是,77和7这组数就应该输出78;2.不应该从给定的判断条件入手找,应该先从判断是不是大于a开始,也就是说应该调整一下想问题时,判断条件的先后问题
代码:

1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<algorithm>
6 using namespace std;//50
7 int main(){
8 int a,b;
9 scanf("%d %d",&a,&b);
10 //int num;
11 int m=0;
12 while(b){
13 if(b%10==4||b%10==7){
14 m=m*10+b%10;
15 }
16 b/=10;
17 }
18
19 int s=0;
20 int flag=0;
21 for(int i=a+1;;i++){
22 s=0;
23
24
25 int d=i;
26 while(d){
27 if(d%10==4||d%10==7){
28 s=s*10+d%10;
29 }
30 d/=10;
31 }
32 if(s==m){
33 flag=i;
34 break;
35 }
36 }
37
38 printf("%d",flag);
39 }
C. Lucky Conversion
题意:4和7是幸运数字,现在给定两个字符串a和b,可以执行两种操作,1)将里面的4替换为7,将里面的7替换为4;2)交换a字符串中任何一对位置,问从字符串a到字符串b要经过最少多少步
思路:统计a和b中不同的4和7,然后直接输出大的那个
代码:

1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<algorithm>
6 using namespace std;//50
7 const int maxx=1e5+10;
8 int main(){
9 char s1[maxx],s2[maxx];
10 scanf("%s",&s1);
11 scanf("%s",&s2);
12 int len1=strlen(s1),len2=strlen(s2);
13 int s=0,q=0;
14 for(int i=0;i<len1;i++){
15 if(s1[i]==s2[i]){
16 continue;
17 }else{
18 if(s1[i]=='4'){
19 s++;
20 }else if(s1[i]=='7'){
21 q++;
22 }
23 }
24 }
25 printf("%d",max(q,s));
26 }
D.Lucky Number 2
题意:就是给定了了一串数字,这串数字由4和7组成,并且有a1个4,a2个7,a3个47,a4个74,给定a1--a4,问这串数字最小是多少
思路:读错了题,不知道47必须是紧挨着的,后悔!大致思路就是个找规律,从题目中知道这是仅有4和7,如果你写4747这种夹杂任意4和7的字符串就能知道:当以4开头以4结尾的时候47和74一样多,当以7开头以7结尾的时候74和47一样多,当以4开头以7结尾或者以7开头以4结尾的时候47和74一样多,并且47和74最多只能差1,这样就可以对这些数进行分类:
1.当47的个数>74的个数:一定是44444..474747777保证最小
2.当47的个数<74的个数:一定是7444...474747777保证最小
3.当47的个数=74的个数:一定是4444474747....774保证最小
代码:

1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<algorithm>
6 using namespace std;//50
7 int main(){
8 int a1,a2,a3,a4;
9 scanf("%d %d %d %d",&a1,&a2,&a3,&a4);//a3--47
10 if(abs(a3-a4)>1){
11 printf("-1\n");
12 }else if (a3 == a4){
13 if (a1<2&&a2<2){
14 printf("-1\n");
15
16 }else if (a1-1>=a3&&a2>=a3){
17 a1=a1-a3-1;
18 a2=a2-a3;
19 for(int i=1;i<=a1;i++) printf("4");
20 for(int i=1;i<=a3;i++) printf("47");
21 for(int i=1;i<=a2;i++) printf("7");
22 printf("4\n");
23
24 }else if (a2-1>=a3&&a1>=a3){
25 a2=a2-1-a3;
26 printf("7");
27 for (int i=1;i<=a3;i++) printf("47");
28 for (int i=1;i<=a2;i++) printf("7");
29 printf("\n");
30
31 }else{
32 printf("-1\n");
33
34 }
35 }else if(a3>a4){
36 a1=a1-a3;
37 a2=a2-a3;
38 if(a1<0||a2<0){printf("-1\n");}
39 for (int i=1;i<=a1;i++) printf("4");
40 for (int i=1;i<=a3;i++) printf("47");
41 for (int i=1;i<=a2;i++) printf("7");
42 printf("\n");
43 }else{
44 a1=a1-a4;
45 a1=a2-a4;
46 if(a1<0||a2<0){printf("-1\n");}
47 printf("7");
48 for (int i = 1; i <= a1; i++) printf("4");
49 for (int i = 1; i <= a3; i++) printf("47");
50 for (int i = 1; i <= a2; i++) printf("7");
51 printf("4\n");
52 }
53 }
2020.12.14vj补题的更多相关文章
- 2020.12.20vj补题
A - Insomnia cure 题意:一共s只龙,每隔k,l,m,n只龙就会受伤,问这s只龙有多少龙是受伤的 思路:看起来题目范围并不是很多,直接进行循环判断 代码: 1 #include< ...
- 2020 wannafly camp 补题 day1
题目可以从牛客上找到. 最简单的一个题应该是B B. 密码学 这个应该就是倒着推,题目给了你加密的顺序,所以我们逆推这个就可以得到每一次加密前的字符串. 1H. 最大公约数 题目大意就是给你一个范围1 ...
- 2020.1.30--vj补题
C - C CodeForces - 991C 题目内容: After passing a test, Vasya got himself a box of n candies. He decided ...
- 2020.11.6-vj补题
A - A CodeForces - 136A 题解:按输入的顺序输出对应的下标即可,定义一个数组,将输入的作为下标,下标为值,最后依次输出即可: #include<bits/stdc++.h& ...
- 【补题记录】ZJU-ICPC Summer Training 2020 部分补题记录
补题地址:https://zjusummer.contest.codeforces.com/ Contents ZJU-ICPC Summer 2020 Contest 1 by Group A Pr ...
- 【JOISC 2020 补题记录】
目录 Day 1 Building 4 Hamburg Steak Sweeping Day 2 Chameleon's Love Making Friends on Joitter is Fun R ...
- Codeforces VP/补题小记 (持续填坑)
Codeforces VP/补题小记 1149 C. Tree Generator 给你一棵树的括号序列,每次交换两个括号,维护每次交换之后的直径. 考虑括号序列维护树的路径信息和,是将左括号看做 ...
- 第十届山东省acm省赛补题(1)
今天第一场个人训练赛的题目有点恐怖啊,我看了半个小时多硬是一道都不会写.我干脆就直接补题去了.... 先补的都是简单题,难题等我这周末慢慢来吧... A Calandar Time Limit: 1 ...
- 2020.12.12【NOIP提高B组】模拟 总结
第一次来 B 组做,虚的很 T1: 容斥原理 比赛时也打了个大致,但挂了,只有 50 分. 赛后重构了一下代码,AC \(UPDATE:2020/12/13\ \ \ 14:10\) 思路: 像前缀和 ...
随机推荐
- Bug调试专项练习三笔记
前言:大家需要将文件夹中"有问题的代码" 导入到自己的工作空间中一. 训练一: 正确效果:首先要求大家导入给大家的项目, 给项目的"虚拟路径" 设定为" ...
- POj1860(floyd+正权回路)
题目传送门 题意:有多种汇币,汇币之间可以交换,这需要手续费,当你用100A币交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到(100 - 0.39) * 29.75 = 296 ...
- 推荐一份Web 工程师的前端书单
014年一月以来,自己接触web前端开发已经两年多了,记录一下自己前端学习路上看过的,以及道听途说的一些书,基本上按照由浅入深来介绍. JavaScript 入门 <JavaScript权威指南 ...
- 使用 Elastic 技术栈构建 Kubernetes全栈监控
以下我们描述如何使用 Elastic 技术栈来为 Kubernetes 构建监控环境.可观测性的目标是为生产环境提供运维工具来检测服务不可用的情况(比如服务宕机.错误或者响应变慢等),并且保留一些可以 ...
- 全网最详细的Linux命令系列-iptrad-ng网络流量监测命令
观察网络流量的工具:IPTRAF 想知道你的Linux系统上网络流量有多大吗?想知道是哪一块网卡承载着网络流量吗?想知道哪一个进程产生了网络流量吗?iptraf可以帮你做到.在最新的Linux rel ...
- 详解DNS重绑定攻击
0x00 前言 DNS重绑定攻击的用法有很多种,这篇文章主要理解DNS重绑定攻击的原理,并介绍如何通过DNS重绑定来攻击内网设备.为了更好的理解DNS重绑定攻击,我们先从Web浏览器的同源策略开始介绍 ...
- Fiddler使用 断点 模拟返回 AutoResponder Mock 模拟数据 相关学习记录
断点 测试中有时需要改变发出去的请求信息,需要用到打断点的方法.断点包含两种方式: before response:在request请求的时候,未到达服务器之前,一般用来修改请求参数 after re ...
- 小程序使用 Promise.all 完成文件异步上传
小程序使用 Promise.all 完成文件异步上传 extends [微信小程序开发技巧总结(二) -- 文件的选取.移动.上传和下载 - Kindear - 博客园 (cnblogs.com)] ...
- matlab文件管理
当前文价夹浏览器以及路径管理器 在主页面左侧有单独的窗口进行显示,可以显示当前目录下的文件并提供文件搜索功能. 搜索路径 搜索先后步骤 输入字符串"polyfit" (1)检查 ...
- Day01_05_Java第一个程序 HelloWorld - java类规则
第一个程序Hello World *基础语法规则: 1. 第一个Java程序 HelloWorld! public class HelloWorld{ public static void main( ...