| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1600 人关注过本帖
标题:刚做的百度那个比赛的题目
只看楼主 加入收藏
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
既然102位就会出现循环节,所以精确的话就开到102大小了
2012-12-12 00:05
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 31楼 czz5242199
恩,谢谢啊

My life is brilliant
2012-12-12 00:06
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
事实上我对100种情况进行了罗列,除了最特殊的00外,到最后只有两种可能,1459循环或者1123581347循环,也就是说循环数只有可能是1、4、10三者之一,希望众大牛不被雷到。。。


[fly]存在即是合理[/fly]
2012-12-12 07:20
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
收藏
得分:0 
表示有些看不懂,开始是自定义函数吗?我现在课本说是C其实是有时候是C++看起来很难受,现在中国C语言的教材伤不起
2012-12-12 09:19
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
我也写个 不知道对不对。
程序代码:
#include <stdio.h>
int num[30] = {0};
int pre, mod;

void construct(int y[], int a, int b);

int main(void)
{
    int a, b, n, T, m;
    scanf("%d", &T);
    int i = 1;
    while (i <= T)
    {
        scanf("%d%d%d", &a, &b, &n);
        if (a ==0 && b == 0)
        {
            printf("Case #%d: %d\n", i, 0);
        }
        else
        {
            construct(num, a, b);
            if (mod)
            {
                if (n <= pre)
                {
                    printf("Case #%d: %d\n", i, num[n - 1]);
                }
                else
                {
                    m = (n - pre) % 10 ? (n - pre) % 10 : 10;
                    printf("Case #%d: %d\n", i, num[m + pre - 1]);
                }
            }
            else           
            {
                if (n <= pre)
                {
                    printf("Case #%d: %d\n", i, num[n - 1]);
                }
                else
                {
                    m = (n - pre) % 4 ? (n - pre) % 4 : 4;
                    printf("Case #%d: %d\n", i, num[m + pre - 1]);
                }
            }
        }
        i++;
    }
    return 0;
}

void construct(int y[], int a, int b)
{
    int i = 0, c, d;
    y[0] = a;
    y[1] = b;
        while (1)
    {
        if (i >= 28) break;
        c = (y[i] + y[i+1]) / 10;
        d = (y[i] + y[i+1]) % 10;
        if (c == 0)
        {
            y[i+2] = d;
            i++;
        }
        else
        {
            y[i+2] = c;
            y[i+3] = d;
            i += 2;
        }
    }
    for (i = 0; i < 30; i++)
    {
        if (y[i] == 1 && y[i+1] == 1)
        {

            pre = i;
            mod = 1;
            break;
        }
        if (y[i] == 1 && y[i+1] == 4)
        {
            pre = i;
            mod = 0;
            break;
        }
    }
}
在少数量的测试还是能通过 但是现在提交过期了 没办法验证啊。
图片附件: 游客没有浏览图片的权限,请 登录注册



[ 本帖最后由 有容就大 于 2012-12-12 15:46 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-12-12 13:54
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
int Value[MaxSize]={0};
int getValue(int a, int b, int n)
{
    int i,j,sum;
    i=0;j=1;
    if(a==0&&b==0) return 0;
    else
    {
        Value[0]=a;Value[1]=b;
        while(j<n)
        {
            if((sum=Value[i]+Value[j])>9)
            {
                i+=2;j+=2;
                Value[i]=1;
                Value[j]=sum%10;
            }
            else
            {
                i+=1;j+=1;
                Value[j]=sum;
            }
        }
    }
    return (j<=MaxSize)?Value[j]:-1;
}
int main()
{
    int x,a,b,n;
    scanf("%d",&x);
    while(x--)
    {
        scanf("%d%d%d",&a,&b,&n);
        if(a>9||b>9) exit(-1);
        printf("Case #%d: %d\n",x+1,getValue(a,b,n-1));
    }
    return 0;
}//////////这只是n很小的时候使用,题中n<10^9... = =!这个很难啊。
///////////考虑归纳法:getValue(a,b,n)=gteValue(a,b,n-1)+getValue(a,b,n-2)[sum<10] | getValue(a,b,n)=1[sum>=10];[n>=2]
//////////直接写递归代码肯定不行,效率太差了;在数学上可以把 递归式 变成 通项公式,可是 我不会变啊!(可以参考 斐波那契一般式的推导)= =!拙计了。。。
2012-12-12 15:09
快速回复:刚做的百度那个比赛的题目
数据加载中...
 
   



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

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