”颠纳”(天哪)
查看原帖
”颠纳”(天哪)
1385791
fushuoting楼主2024/10/8 21:57

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 我要被气死啦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 你知道什么让我这么气吗? 就是这个题目的设定: 首先,花了5分钟出代码(写代码不到一分钟) 第一遍代码:

#include<iostream>
using namespace std;
int main()
{
	int a, b, c, cnt = 0;
	cin >> a >> b >> c;
	for (int i = 1; i <= c; i++)
	{
		for (int j = 1; j <= c; j++)
		{
			if (a * i + b * j == c)
			{
				cnt++;
			}
		}
	}
	cout << cnt;
	return 0;
}

然后,我就看见:在匆匆红花之中,闪着一片绿叶(9WA 1AC) 我以为是超int了,就加了一个智慧的东东

#define int unsigned long long

然后你看第二份代码

#include<iostream>
using namespace std;
#define int unsigned long long
signed main()//强调这里是signed不是int
{
	int a, b, c, cnt = 0;
	cin >> a >> b >> c;
	for (int i = 1; i <= c; i++)
	{
		for (int j = 1; j <= c; j++)
		{
			if (a * i + b * j == c)
			{
				cnt++;
			}
		}
	}
	cout << cnt;
	return 0;
}

没变 我以为是循环没有遍历所有,就变成了

#include<iostream>
using namespace std;
#define int unsigned long long
signed main()//强调这里是signed不是int
{
	int a, b, c, cnt = 0;
	cin >> a >> b >> c;
	for (int i = 1; i <= c * c; i++)
	{
		for (int j = 1; j <= c * c; j++)
		{
			if (a * i + b * j == c)
			{
				cnt++;
			}
		}
	}
	cout << cnt;
	return 0;
}

结果就1-5,7-10TLE,6-7WA了 我只能向外界寻求帮助 后来我看到一个叫警示后人的帖子 写了

题目写的是:关于未知数x和y的所有非负整数解组数

因此,模拟x,y的循环要从0开始

我这才明白,我错在哪了 最终版代码

#include<iostream>//头文件,可以不用万能头
using namespace std;
#define int unsigned long long//智慧的东西
signed main()//强调,强调,重要的事情说三遍,signed,signed,signed!!!
{
	int a, b, c, cnt = 0;
	cin >> a >> b >> c;
	for (int i = 0; i <= c; i++)//更改循环初始条件
	{
		for (int j = 0; j <= c; j++)//和上面一样
		{
			if (a * i + b * j == c)//枚举
			{
				cnt++;
			}
		}
	}
	cout << cnt;
	return 0;
}

所以,当你费尽千辛万苦终于做出一道题,却几乎没一个AC的,有可能,你可正确答案只差一步之遥,功亏一篑

2024/10/8 21:57
加载中...