玄学特性求解
  • 板块学术版
  • 楼主dream_on_screen
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/16 12:03
  • 上次更新2024/3/16 14:52:31
查看原帖
玄学特性求解
912241
dream_on_screen楼主2024/3/16 12:03

这是一篇cf1292b的代码(有玄学错误和调试代码)

#include <iostream>
#include <cmath>
using namespace std;
long long u[70],v[70];
int n;
long long s,t,ax,ay,bx,by;
int main()
{
	cin>>s>>t>>ax>>ay>>bx>>by;
	u[0]=s;
	v[0]=t;
	long long a,b,c;
	cin>>a>>b>>c;
	for(int i=1;i<=69;i++)
	{
		u[i]=ax*u[i-1]+bx;
		v[i]=ay*v[i-1]+by;
		if(u[i]>=1e16||v[i]>=1e16)
			break;
		n=i;
	}
	int ans=0;
	for(int k=0;k<=n;k++)
	{
		int f[70];
		for(int i=0;i<=69;i++)
			f[i]=0;
		cout<<a<<" "<<b<<" "<<c<<"\n";
		for(int i=0;i<=k;i++)
			f[i]=k-i;
		cout<<a<<" "<<b<<" "<<c<<"\n";
		for(int i=k+1;k<=n;i++)
			f[i]=i;
		cout<<a<<" "<<b<<" "<<c<<"\n";
		long long tt=c;
		long long nowx=a,nowy=b;
		int cnt=0;
		for(int i=0;i<=n;i++)
		{
			long long need=abs(nowx-u[f[i]])+abs(nowy-v[f[i]]);
			if(tt<need)
				break;
			tt-=need;
			nowx=u[f[i]];
			nowy=v[f[i]];
			cnt++;
		}
		if(ans<cnt)
			ans=cnt;
	}
	cout<<ans;
	return 0;
}

可以看到,在第12行定义了a,b,ca,b,c,随后在第13行进行了读入,之后的代码没有对这三个变量进行任何修改,在第28行和第31行输出这三个变量的时候变量的值仍然是原来的,但是在第34行重新输出的时候变量的值变成了神奇的数字

具体地,对于这道题的样例1,程序的输出大概是这样子的

2 4 20
2 4 20
322122547274 313532612680 304942678086
0

其他的输入数据输出的情况也差不多

而且我在写程序的时候想要让第24行到第50行的循环重复运行n次,但是实际上只运行了1次(经检测,n的值是正常的),那么所以说到底是什么原因导致的这些错误

2024/3/16 12:03
加载中...