Johnaur @ 2025-01-11 13:47:03
代码只能开启O2优化后才能AC
int main(){
unsigned char apple[11], n = 10;
scanf( "%hu%hu%hu%hu%hu%hu%hu%hu%hu%hu%hu",
apple, apple+1, apple+2, apple+3, apple+4,
apple+5, apple+6, apple+7, apple+8, apple+9,
apple+10);
apple[10] = apple[10] + 30;
if(apple[0] > apple[10]) n = n - 1;
if(apple[1] > apple[10]) n = n - 1;
if(apple[2] > apple[10]) n = n - 1;
if(apple[3] > apple[10]) n = n - 1;
if(apple[4] > apple[10]) n = n - 1;
if(apple[5] > apple[10]) n = n - 1;
if(apple[6] > apple[10]) n = n - 1;
if(apple[7] > apple[10]) n = n - 1;
if(apple[8] > apple[10]) n = n - 1;
if(apple[9] > apple[10]) n = n - 1;
printf("%hu", n);
return 0;
}
by chen_z @ 2025-01-11 14:13:47
@Johnaur ?你为啥用 char
呢
by Johnaur @ 2025-01-11 14:30:05
@chen_z为了更小的占用
by Whr___114514 @ 2025-01-11 14:36:18
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,apple[10],l,u;
for(int i=0;i<10;i++){
cin>>l;
apple[i]=l;
}
cin>>a;
for(int i=0;i<10;i++){
if(a+30>=apple[i]) u++;
}
cout<<u;
return 0;
}
完全可以这样做呀
by Whr___114514 @ 2025-01-11 14:37:01
内存限制
125.00MB
by chen_z @ 2025-01-11 14:45:53
@Johnaur 完全画蛇添足了吧
by Terrible @ 2025-01-11 14:47:59
%hhu
在 C99(洛谷 C 语言是 C99)及以后可以被用于在 scanf
中作为格式符读取 unsigned char
,%hu
只能用于读取 unsigned short
用于读取 unsigned char
可能属未定义行为。
详见 https://zh.cppreference.com/w/c/io/fscanf
by Johnaur @ 2025-01-11 14:53:02
@Terrible非常感谢
by Terrible @ 2025-01-11 14:55:34
计算机发展到今天,已经没有必要使用短类型整数了(字符串用 char
还是照常用,此处提的是当成整数类型来用)。
卡内存是一件意义不大的事情(125 MB 内存在现在看来根本就太少了),而且根本也没啥必要,去垃圾站随便捞一堆电子垃圾 2GB 内存条。我们都知道值钱的是硬件的设计,不是硬件的生产。
讨论竞赛题的时候尽量不要提题目可能可以在特定的工程上的应用,因为差距其实有点大,知识迁移并不顺畅。把选手思维训练好才是当务之急,不要小家子气。想从事工程相关的工作请移步工程社区。
强调竞赛题中剩下来的那点空间真就意义不大。用,随便用,占用额外内存几乎没有成本,何必斤斤计较呢?
by Johnaur @ 2025-01-11 15:03:49
@Terrible非常感谢解答,我并不是一个竞赛选手,但我希望能通过这样的问题了解更多程序和编译的细节,再次感谢您的解答
by Johnaur @ 2025-01-11 15:23:48
@Johnaur洛谷使用大端存储 即0x1234依次存储为0x12 0x34两个字节