专栏文章
题解:P14583 彩绘标志
P14583题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min1vnpv
- 此快照首次捕获于
- 2025/12/01 19:12 3 个月前
- 此快照最后确认于
- 2025/12/01 19:12 3 个月前
这题很简单,先不看输入格式,题意可以翻译为:如果 则输出 ,如果 则输出 。
那么现在看一下输入格式。发现输入格式带有非数字字符,那么就要对字符进行处理。以下介绍几种方法处理输入。
方法 1:
scanfscanf 是一个功能很强大的输入函数。它不仅可以输入单一的整数、字符、无空格字符串,还可以输入指定字符集的内容,甚至整行字符串(代替 fgets),就是速度有点慢。不过用在这题绰绰有余。我们可以用
scanf("%dg %dg", &a, &b); 来读入。其中 %d 表示读入一个整数到变量中,%dg 表示在读入整数后面紧跟着读入字符 g,%dg %dg 表示在读入两个“整数 +g”之间用若干个空格或其它空白符隔开。完整代码:
CPP#include <cstdio>
int main(){
int a, b;
scanf("%dg %dg", &a, &b);
if (a > b){
printf("0");
}
else{
printf("1");
}
return 0;
}
方法 2:
cin使用
cin 一样可以分别输入整数和字符。可以使用 cin>>digit>>c 的形式来输入一个整数加一个字符。cin 读取东西的时候会自动过滤空格,所以两个“整数 +g”之间不需要再额外读入空格。ios::sync_with_stdio(false); 语句和 cin.tie(NULL); 语句可以用来提升 cin 的读入速度。当然本题可以不使用。建议在正式比赛当中使用,不要敲错。如果有 freopen,最好将这两条语句写在 freopen 的后面。完整代码:
CPP#include <iostream>
using namespace std;
int main(){
int a, b;
char g1, g2;
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> a >> g1 >> b >> g2;
if (a > b){
cout << 0;
}
else{
cout << 1;
}
return 0;
}
方法 3:快速读入
手写的快读可以选择只读入数字字符而忽略非数字字符。由于数字字符都是按从小到大顺序紧挨在一起的,所以数字字符的范围为字符
0 到字符 9,非数字字符的范围就扣除掉数字字符的范围。完整代码:
CPP#include <cstdio>
using namespace std;
int read(){
int x = 0;
int c = getchar();
while (c < '0' || c > '9'){//非数字字符
c = getchar();//直接跳过读新字符
}
while (c >= '0' && c <= '9'){//数字字符
x = x * 10 + (c - '0');
c = getchar();
}
return x;
}
int main(){
int a = read(), b = read();
if (a > b){
putchar('0');
}
else{
putchar('1');
}
return 0;
}
以上就是常用的三种读入方法,希望对你有所帮助。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...