社区讨论

我寻思着应该改哪呢 72分

P4956[COCI 2017/2018 #6] Davor参与者 4已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@lo7sywy3
此快照首次捕获于
2023/10/27 07:15
2 年前
此快照最后确认于
2023/10/27 07:15
2 年前
查看原帖
这 是 一 只 72 分 的 代 码:
CPP
#include <iostream>
using namespace std;
int n, x = 1, k = 1;
int main(){
	cin >> n;
	int nn = n / 52;
	for(k = 1; ; k++){
		int kk = k * 21;
		for(x = 1; x <= 100; x++){
			if(x * 7 + kk == nn){
				break;
			}
		}
		if(x * 7 + kk == nn){
			break;
		}
	}
	cout << x << endl << k;
	return 0;
}
这 是 一 只 思 路:
我寻思着不是k和x有限制吗
CPP
详见:
0 < x <= 100   k > 0
所以 for 循环搁那转呢,为了减少计算量( n 可能会很大)把 n / 52 放外面赋值给了 nn ,第一轮 for 循环 k * 21 赋值给了 kk ,为了满足 x 尽可能大(第二轮 for 循环), k 尽可能小(第一轮 for 循环),所以主要循环 x ,但满足方程 x * 7 + k * 21 == n / 52,
即 x * 7 + kk == nn 时 break 跳出 2 个 for 循环,最后输出 x 和 k , return 0

回复

11 条回复,欢迎继续交流。

正在加载回复...