Uva 107 The Cat in the Hat

本文通过一个具体的程序实例,详细解析了如何利用数学方法解决猫变猫问题,并分享了优化程序以避免超时的经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 int Height,WorkNum;
 5 int TotalNum;
 6 int AllCatsHeight,mid;
 7 int Left = 1,Right=10000;
 8 int main()
 9 {
10     while(cin>>Height>>WorkNum,Height+WorkNum){
11         TotalNum = 1;
12         AllCatsHeight = Height;
13         Left = 1,Right=10000000;
14         while(Left){
15             mid = (Left + Right)/2;
16             if(fabs(log(Height) * log(mid) - log(WorkNum)* log(mid + 1))<=0.00001)break;
17             if(log(Height) * log(mid) - log(WorkNum)* log(mid + 1)>0)Right = mid;
18             else Left = mid;
19         }
20         int Every = 1;
21         while(Height > 1){
22             Height /= (mid + 1);
23             Every *= mid;
24             AllCatsHeight += (Height * Every);
25             TotalNum += Every;
26         }
27         cout<<TotalNum - WorkNum<<" "<<AllCatsHeight<<endl;
28     }
29     return 0;
30 }

题意就不多说了,就是猫变猫。

做这个题需要的是数学好,,,,思路很简单。

做了好几个小时,老是超时,改动好多次才好,最后也不知道怎么好的,晕。

以后卡壳了还是做点别的换换思路,不能像今天一样熬这么长时间了,有点得不偿失,切记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值