4 条题解
-
2
根据数学推理,当 时,,,。
于是显然想到以下代码:(语言:Python)
s=int(input()) print(s*13//24,s*7//24,s*4//24)然后自信提交,WA 10 pts。link
联想到,在这一篇题解中,我们学会了查看错误信息。
查看错误信息,发现输出会比标准答案大 1 或 2。
那么先做除法,后做乘法吗?(语言:python)
s=int(input()) print(s//24*13,s//24*7,s//6)并非如此。我们只获得了 50 分的成绩。link
但是,当我提交以下代码时,有 5 个测试点返回了 1。 (语言:C++,代码大意:如果 则不输出,显示
Wrong Answer Standard answer longer than user output.;否则返回 1 ,显示Runtime Error 您的程序返回了1。)然后有 5 个测试点返回了 1。显然本题是错题。
然后想到可以在网上寻找有用的资料,在这里找到了两篇题解。
其中一篇是(语言:C++)
#include <stdio.h> #define ll long long int main() { ll x=0; scanf("%lld",&x); int a=x/3; int b=x/3; int c=x/3; //第三次分钱,我们逆向思维先从最后一次都相等开始反向分 a/=2; b/=2; c=a+b+c; //第二次分 a/=2; c/=2; b=a+b+c; //第一次分 b/=2; c/=2; a=a+b+c; printf("%d %d %d",a,b,c); return 0; }题解提示我们可以逆向推理。把题解复制下来也可以通过本题。
但是经过检验(link),AC 代码中的 a+b+c 并不等于输入的x,所以本题确实是一道错题。
那我们通过这道题还能学到什么呢?正难则反的思想吗?并不是。我们通过这题只能学到一种能力——从网上检索资料的能力,而这种能力是不能应用到考试里的。
-
2
正难则反
#include<bits/stdc++.h> #define ll long long #define R register #define F(i,a,b) for(int i = (a);i<=(b);i++) using namespace std; inline int read(){R int x=0,t=1;R char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') t=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*t;} const int N=2e5+10; signed main() { int n=read(); int x,y,z; x=y=z=n/3; z+=(x/2+y/2); x/=2; y/=2; y+=(x/2+z/2); x/=2; z/=2; x+=(y/2+z/2); y/=2; z/=2; cout << x << " " << y << " " << z << '\n'; return 0; } /* */
- 1
信息
- ID
- 538
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 8
- 标签
- 递交数
- 139
- 已通过
- 22
- 上传者