欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

多校第八场

发布时间:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的这篇文章主要介绍了 多校第八场 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

HDU  4950  Monster

       小模拟题。找到推断的临界条件。

     

#include<iostream> #include<cstdio> #include<algorithm> using namespace std; __int64 h,a,b,k,sum; int main() {int i=0;while(scanf("%I64d%I64d%I64d%I64d",&h,&a,&b,&k)&&(a+b+h+k)){i++;bool flag=0;sum=h;if(a>=h) flag=1;if(sum-k*a+(k-1)*b<1) flag=1;if(a*k-b*(k+1)>0) flag=1;if(flag==1)cout<<"Case #"<<i<<": YES"<<endl;else cout<<"Case #"<<i<<": NO"<<endl;}return 0; }

HDU  4952    Number Transformation

      这个题的数据量是比較大的,要是直接暴搞的话肯定是会T的。可是打表之后就发现了规律;

    

#include<iostream> #include<cstdio> using namespace std; __int64 x,k; int main() {int i=0;while(scanf("%I64d%I64d",&x,&k)&&(x+k)){__int64 y;int t=0;for(int i=2;i<=k;i++){if(x%i){if(t>100) break;y=x/i;y++;x=y*i;y=x/i;t++;cout<<i<<" "<<y<<" "<<x<<endl;}}}return 0; }

  发现到x/(i+1)小于i+1之后。x/(i+1)的值是不会变化的;

  事实上官方是有公式证明的;

以下是代码。

    

#include<iostream> #include<cstdio> using namespace std; __int64 x,k; int main() {int j=0;while(scanf("%I64d%I64d",&x,&k)&&(x+k)){__int64 y;j++;bool flag=0;for(int i=2; i<=k; i++){if(x%i){y=x/i;y++;x=y*i;y=x/i;if(y<i){flag=1;break;}}}if(flag==1) printf("Case #%d: %I64d\n",j,y*k);else printf("Case #%d: %I64d\n",j,x);}return 0; }

 

转载于:https://www.cnblogs.com/zsychanpin/p/7131609.html

总结

以上是生活随笔为你收集整理的多校第八场的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。