目录

P5730 【深基5.例10】显示屏 - 字符表问题

P2141 [NOIP2014 普及组] 珠心算测验 - 数组去重法

P1553 数字反转(升级版)- 细节​​​​​​​

P1205 [USACO1.2]方块转换 Transformations - 暴力模拟


P5730 【深基5.例10】显示屏 - 字符表问题

输出 #1

XXX...X.XXX.XXX.X.X.XXX.XXX.XXX.XXX.XXX
X.X...X...X...X.X.X.X...X.....X.X.X.X.X
X.X...X.XXX.XXX.XXX.XXX.XXX...X.XXX.XXX
X.X...X.X.....X...X...X.X.X...X.X.X...X
XXX...X.XXX.XXX...X.XXX.XXX...X.XXX.XXX

强行手动打表法:(表打完了考试也结束了)

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
char W[10][5][3]=//W[i][j][k]表示第i个数字的第j行的第k列,(手打累死了)
{{//0'X','X','X','X','.','X','X','.','X','X','.','X','X','X','X',},{//1'.','.','X','.','.','X','.','.','X','.','.','X','.','.','X',},{//2'X','X','X','.','.','X','X','X','X','X','.','.','X','X','X',},{//3'X','X','X','.','.','X','X','X','X','.','.','X','X','X','X',},{//4'X','.','X','X','.','X','X','X','X','.','.','X','.','.','X',},{//5'X','X','X','X','.','.','X','X','X','.','.','X','X','X','X',},{//6'X','X','X','X','.','.','X','X','X','X','.','X','X','X','X',},{//7'X','X','X','.','.','X','.','.','X','.','.','X','.','.','X',},{//8'X','X','X','X','.','X','X','X','X','X','.','X','X','X','X',},{//9'X','X','X','X','.','X','X','X','X','.','.','X','X','X','X',}
};
int n;
char s[110];
int main(){cin>>n;//输入nfor(int i=0;i<n;i++){cin>>s[i];//输入要打印的字符}for(int i=0;i<5;i++){//枚举每一行for(int j=0;j<n;j++){//枚举每一个数字for(int k=0;k<3;k++){//枚举每个数字的列cout<<W[s[j]-'0'][i][k];//输出,因为s[j]为字符,所以要减去'0'}if(j!=n-1) cout<<'.';//如果最后一列,就不需要打印'.'}cout<<endl;//换行}return 0;
}

复制粘贴法:

#include<stdio.h>
#include<string.h>char s[5][55] = {"XXX...X.XXX.XXX.X.X.XXX.XXX.XXX.XXX.XXX.","X.X...X...X...X.X.X.X...X.....X.X.X.X.X.","X.X...X.XXX.XXX.XXX.XXX.XXX...X.XXX.XXX.","X.X...X.X.....X...X...X.X.X...X.X.X...X.","XXX...X.XXX.XXX...X.XXX.XXX...X.XXX.XXX.",
};int main()
{int n;int len, i, x;int j, k;char str[110];scanf("%d", &n);scanf("%s", str);len = strlen(str);for (j = 0; j < 5; ++j)//有5行 {//打印除了最后一个字符外的第j行 for (i = 0; i < len - 1; ++i){x = str[i] - '0';for (k = 4 * x; k <= 4 * x + 3; ++k)//截下对应数字的4列 printf("%c", s[j][k]);}//魔鬼细节:最后的数字只有3列 x = str[i] - '0';for (k = 4 * x; k <= 4 * x + 2; ++k)printf("%c", s[j][k]);printf("\n");}return 0;
}

P2141 [NOIP2014 普及组] 珠心算测验 - 数组去重法

难点:
    数据元素不能重复
    PS:初看题解只想到了相加两个元素不能重复
    (实际不考虑,不同元素的值可能相同,只要考虑相加的元素表示的不是相同变量就行)
    本题主要卡在计数时候并非只需对符合a+b=c的c的个数进行计数就行了,还要考虑c是否已经计入过。

也就是说,例如有1 2 3 4 5,1+4和2+3都等于5,但是只能算一个

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
typedef long long LL;
const int N=1e5+10;
using namespace std;int n;
int ans[N],num[N];
int main()
{cin>>n;for(int i=0;i<n;i++){cin>>ans[i];num[ans[i]]=1;    //用于检测是否用过}int sum=0;for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(num[ans[i]+ans[j]]==1)sum++;num[ans[i]+ans[j]]=0;    //以用过,去重}}cout<<sum;return 0;
}

P1553 数字反转(升级版)- 细节

给定一个数,请将该数各个位上数字反转得到一个新数。

这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数只改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为0(除非小数部分除了0没有别的数,那么只保留1个0);分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为0),本次没有负数。

题目描述

给定一个数,请将该数各个位上数字反转得到一个新数。

这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。

  • 整数反转是将所有数位对调。

  • 小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分。

  • 分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母。

  • 百分数的分子一定是整数,百分数只改变数字部分。

输入格式

一个数 s

输出格式

一个数,即 s 的反转数

算法核心在于去掉前导零
而整数部分、小数部分反转后,去除前导零的规则不同,需要分别讨论。
整数反转去除前导零:先将整数存成字符串s,然后从s[s.length()-1]向s[0]遍历,若至s[0]还是0,就输出0。
小数反转去除前导零:先将小数存成字符串s,然后从s[0]向s[s.length()-1]遍历,若至s[s.length()-1]还是0,就输出0。

错误写法:75分

由数字反转改编的写法,大致思路是分成三部分,左右各反转一次,中间字符直接输出

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
typedef long long LL;
const int N = 1e5 + 10;
using namespace std;int a[N], n;int fz(string fzs)
{int sz = 0,len=0;for (int i = 0; fzs[i] != '\0'; i++){len++;}for (int i = len - 1; i >= 0; i--){sz *= 10;sz += fzs[i] - '0';}return sz;
}int main()
{string s1, s3, s;char s2;int flag = 0, i, k = 0;cin >> s;s1 = s3 = s;for (i = 0; i < s.length(); i++){if (s[i] < '0' || s[i]>'9'){flag = 1;s1[i] = '\0';break;}s1[i] = s[i];}if (flag == 0){int ret = fz(s1);cout << ret;}else{s2 = s[i];for (++i; s[i] != '\0'; i++){s3[k++] = s[i];}s3[k] = '\0';int ret1 = fz(s1);if(s2=='%'){cout<<ret1<<s2;return 0;;}int ret2 = fz(s3);cout << ret1 << s2 << ret2;}return 0;
}

这样写的话当遇到600.084 会返回6.480;无法去除前导0

AC写法:(只能一步步细节死磕)

#include<bits/stdc++.h>
using namespace std;
int main()
{string s;char p=0;//放符号 int cnt=0; cin>>s;for(int i=0;i<s.size();i++){if(s[i]>='0'&&s[i]<='9') cnt++;//记录第一个数长度else    //遇到符号,记录,跳出 {p=s[i];break;} }int x=cnt;//记下第一个数末后一个的位置,也就是符号的位置,如果是分数或小数就要用 cnt--;while(s[cnt]=='0'&&cnt>0) cnt--;//去除多余前导0; for(int i=cnt;i>=0;i--)//输出第一个数 cout<<s[i];if(p==0) return 0;//无符号return 0 elseif(p=='%') {cout<<p;return 0;} else cout<<p;//其他继续 int m=s.size()-1;while(s[x+1]=='0'&&x<m-1) x++;//去除末尾0 while(s[m]=='0'&&m>x+1) m--; //去除多余前导0for(int i=m;i>x;i--)//输出第二个数 cout<<s[i];return 0;
}

P1205 [USACO1.2]方块转换 Transformations - 暴力模拟

3
@-@
---
@@-
@-@
@--
--@

我地马呀,非常暴力的模拟题,嘎嘎一顿敲就完事儿了

《一题彻底搞懂模拟》

#include<bits/stdc++.h>
using namespace std;
int n;
char a[15][15],b[15][15],c[15][15],d[15][15];bool check(char s[15][15]) {for(int i = 1;i <= n;i++) {for(int j = 1;j <= n;j++) {if(s[i][j] != c[i][j]) return false;}}return true;
}bool work1()
{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)b[j][n-i+1]=a[i][j];}if(check(b)) return true;return false;
}
bool work2()
{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)b[n-i+1][n-j+1]=a[i][j];}if(check(b)) return true;return false;
}
bool work3()
{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)b[n-j+1][i]=a[i][j];}if(check(b)) return true;return false;
}
bool work4()
{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)b[i][n-j+1]=a[i][j];}if(check(b)) return true;return false;
}
bool work5()
{work4();for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)a[i][j]=b[i][j];  if(work1())return 1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)a[i][j]=b[i][j]; if(work2())return 1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)a[i][j]=b[i][j]; if(work3())return 1;return 0;
}
bool work6()
{if(check(b)) return true;return false;
}
void work()
{if(work1()){cout<<1;return ;}if(work2()){cout<<2;return ;}if(work3()){cout<<3;return ;}if(work4()){cout<<4;return ;}if(work5()){cout<<5;return ;}if(work6()){cout<<6;return ;}cout<<7;
}
int main()
{cin>>n;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){cin>>a[i][j];d[i][j]=a[i][j];}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>c[i][j];work();return 0;
}

洛谷 - 一些好玩的问题 2相关推荐

  1. 洛谷 - 一些好玩的问题

    目录 P2181 对角线 - 数学 P1009 [NOIP1998 普及组] 阶乘之和 - 越界 P1217 [USACO1.5]回文质数 Prime Palindromes - 超时 P5729 [ ...

  2. 洛谷 - 一些好玩的问题 3

    目录 P5731 [深基5.习6]蛇形方阵 - 输出格式 P5732 [深基5.习7]杨辉三角 - 经典数学 P1957 口算练习题 小知识1:sprintf函数的用法 P1308 [NOIP2011 ...

  3. 洛谷· [AHOI2008]紧急集合 / 聚会

    初见安~这里是传送门:洛谷P4281紧急集合/聚会 题目描述 欢乐岛上有个非常好玩的游戏,叫做"紧急集合".在岛上分散有N个等待点,有N-1条道路连接着它们,每一条道路都连接某两个 ...

  4. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  5. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  6. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  7. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

  8. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

  9. 洛谷P1417 烹调方案

    洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...

最新文章

  1. 201521123117 《Java程序设计》第1周学习总结
  2. mysql 根据字段映射
  3. C++作用域为类的常量
  4. php终止脚本执行(exit、die、return)
  5. 普通程序猿三步升级成高级程序员
  6. 两篇Science文章揭示癌症治疗中细胞感应氧气的新机制
  7. 中国联通沃支付echop支付插件
  8. 用acdess制作html文件,使用ACDSee制作图片注释
  9. 如何选择好的健身房管理系统而且还不收费
  10. 圆你的大厂梦!字节跳动Java高频面试题真题一二三面常见问题
  11. 前世回忆:放生洒甘露水的重要
  12. Markdown语法图文详解
  13. 【巡店软件系统开发】2-1 WEB软件宣传网站
  14. 使用vector创建一个二维数组(一)
  15. axios get带参数的请求方法
  16. 输入三个字母,比较AISS码大小
  17. linux下用飞信机器人发短信的实例
  18. android otg连接单反
  19. Mixlab设计黑客Shadow,做客光点TALK
  20. Revit API 开发(12): Revit 文件存储结构

热门文章

  1. python 管理 交换机_Python管理Cisco交换机
  2. 计算机网络在生活的作用作文,关于网络的作文
  3. 禁止计算机系统,如何禁止计算机被远程控制
  4. 学习进度报告【第二周】
  5. C++编程实现多显示器控制(复制、横屏、纵屏,显示器个数)等
  6. 【ASP.NET教程-WP教程14】ASP.NET Web Pages - 发布网站:将您的应用程序带到全网
  7. pands 画图 调整大小_微软在Win10 20H1中将画图、记事本、写字板等设为可卸载软件...
  8. 性能监控之linux sar命令
  9. 报告称:你的智能家居设备每周可能遭受10000次黑客攻击
  10. windows老是弹出Windows Media Player媒体库