频道栏目
首页 > 资讯 > 其他 > 正文

HNNU 11658 阶乘除法【湖南省第十一届大学生计算机程序设计竞赛,数论】

16-08-24        来源:[db:作者]  
收藏   我要投稿

原题链接:http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11658&courseid=0

刚开始想到“暴力”,后来发现int只能保存到12!,而__int64也只能到保存到20多的阶乘,

后来发现,两个阶乘相除约分后为几个连续自然数相乘的形式,后来还是TLE,最后发现,只有1是Impossible

其他的都可以找到。优化一下循环可以过。

还有一种方法,从sqrt(n)开始向前面枚举。

AC代码1:

 

#include 
#include 
using namespace std;
int main()
{
    int n;
    int kase=0;
    while(cin>>n)
    {
        printf("Case %d: ",++kase);
        if(n==1)
        {
            cout<<"Impossible"<13)
                    break;
                ans*=j;
                if(ans==n)
                {
                    x=i;
                    y=j;
                    flag=false;
                }
                if(ans>n)
                    break;
            }
        }
        if(flag)
        {
            cout<
相关TAG标签
上一篇:HTTP - TCP实现HTTP GET请求 (2)
下一篇:Python3连接MySQL数据库
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站