| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4040 人关注过本帖, 1 人收藏
标题:一道新生赛的题目
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
测试代码~

程序代码:
#include<stdio.h>
#include<math.h>

int main()
{
     int m=0;
     int n=0;

     int k=0;
     int a=0;

     int t=0;

    double k1=0;
    double k2=0;

    int i=0;

    printf("请输入m n:");

    scanf("%d%d",&m,&n);

    for (i=1,a=n,t=(m*n-1);a!=1;++i)
    {

        k1=a/(double )t;

        a=(a+a)%t;


        k2=(a/(double )t-k1)*(n-1);


        k2=fmod(k1+k2,1.0);

        if (k2<0)
            ++k2;

        a=((int )(k2*t+0.5))%t;

    }

    printf("%d\n",i);

    return 0;
}


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-07 14:34
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
附加测试代码~

程序代码:
#include<stdio.h>
#include<math.h>

int fun(int m, int n);

int main()
{
    int m=0;
    int n=0;
    int s=0;

    scanf("%d%d",&m,&n);

    while (s=fun(m,n))
    {
        printf("%d\n",s);
        scanf("%d%d",&m,&n);
    }

    return 0;
}

int fun(int m,int n)
{
    int a=0;
    int t=0;

    double k1=0;
    double k2=0;

    int i=0;

    if (m==0||n==0)
        return 0;

    for (i=1,a=n,t=(m*n-1);a!=1;++i)
    {

        k1=a/(double )t;

        a=(a+a)%t;

        k2=(a/(double )t-k1)*(n-1);

        k2=fmod(k1+k2,1.0);

        if (k2<0)
            ++k2;

        a=(int )(k2*t+0.5);

    }

    return i;
}


图片附件: 游客没有浏览图片的权限,请 登录注册

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[此贴子已经被作者于2017-3-7 15:03编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-07 14:52
莫名Vet
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2017-3-6
收藏
得分:0 
回复 12楼 九转星河
好像是这么做 ,但是还是要优化一下
2017-03-08 18:38
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 13楼 莫名Vet
for 循环那里应该还可以把式子合并一下~大体思路没问题就行~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-08 18:47
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 13楼 莫名Vet
试试这个~

程序代码:
#include<stdio.h>
#include<math.h>

int fun(int m, int n);

int main()
{
     int m=0;
     int n=0;
     int s=0;

    scanf("%d%d",&m,&n);

    while (s=fun(m,n))
    {
        printf("%d\n",s);
        scanf("%d%d",&m,&n);
    }

    return 0;
}

int fun(int m,int n)
{
    int a=0;
    
    double t=0;

    int i=0;

    if (m==0||n==0)
        return 0;

    for (i=1,a=n,t=(double )(m*n-1);a!=1;++i)
        a=(int )(fmod(a/t*n,1.0)*t+0.5);

    return i;
}


[此贴子已经被作者于2017-3-8 19:37编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-08 19:07
莫名Vet
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2017-3-6
收藏
得分:0 
回复 15楼 九转星河
还是超时.....
2017-03-08 20:16
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 16楼 莫名Vet
那就要找一条数学公式推导出来咯~

不过九九数学不好~汗~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-08 21:58
烟雨晨曦
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:150
专家分:599
注 册:2017-3-5
收藏
得分:3 
算的对不上 不知道是我理解错了还是啥
int main(int argc, char** argv)
{
    int n = 0;
    int m = 0;
    int d = 0;
    int nSum = 1;
    sscanf(argv[1], "%d", &m);
    sscanf(argv[2], "%d", &n);
    while(1)
    {
        ++d;
        nSum *= n;
        if((nSum - 1)%(m*n - 1) == 0)
        {
            printf("%d\n", d);
            break;
        }
    }
    return 0;
}

[此贴子已经被作者于2017-3-8 22:19编辑过]

2017-03-08 22:17
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 16楼 莫名Vet
能不能看看测试数据m n的取值范围有多大~还有时间限制是否为1s?~题目好像没有标明耶~不方便做极限测试~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-08 22:31
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 16楼 莫名Vet
经过调试~%的运算速度比fmod快很多~

看来要把数据改成unsigned lont lont int 型了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-08 22:54
快速回复:一道新生赛的题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027700 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved