社区讨论

c语言非要超时吗!

B3629吃冰棍参与者 3已保存回复 3

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@mhizze3h
此快照首次捕获于
2025/11/03 18:28
4 个月前
此快照最后确认于
2025/11/03 18:28
4 个月前
查看原帖
求修改 ai让我在此基础上 在函数里面再加一个while以处理较大的数据 然而原来超时的测试点依旧超时 ai也曾经让我在主函数第二个while也用二分法 然而这个while不会超过三次 我感觉完全没必要
C
#include<stdio.h>
int huan(int chu)//输入一开始有几个 输出最后能吃几个 
{
	int kong=chu,zong=chu;
	while(kong>=3)
	{
		int exchange=kong/3; 
		zong=zong+kong/3;
		kong=kong%3+kong/3;
	}
	return zong;
}
int main()
{
	int i=1;
	int n,x,kong=0,mid,a=1,b,total;//n是总数 x是初始数
	scanf("%d",&n);
	b=n;
	mid=(a+b)/2;
	while(a<b)
	{
		total=huan(mid);
		if(total>n)
		{
			if(total-n>=3)
			{
				b=mid;
				mid=(a+b)/2; 
			}
			else 
			{
				break;
			}
		}
		if(total<n)
		{
			a=mid+1;
			mid=(a+b)/2;
		}
	}
	while(huan(mid-i)>=n)
	{
		i++;
	}
	mid=mid-i+1;
	printf("%d",mid);
}

回复

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

正在加载回复...