| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1264 人关注过本帖
标题:出现了 TLE 怎么办 《YEAR,我就想吃苹果》
只看楼主 加入收藏
光头强
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2015-10-1
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:16 
出现了 TLE 怎么办 《YEAR,我就想吃苹果》
题意很简单,只要你答对了一个问题,你就可以在圣诞节的晚上吃到苹果了,是不是很开心哈!嘿嘿
下面你就告诉我一个数n可以被多少个只有1组成的数整除,这样女神才会送苹果给你吃;

Input

多组测试数据
每次给你一个n,并保证n不能被2或者5整除,n是一个int范围内的数

Output

输出能整除n这个由1组成的数中最少有多少个1.

Sample Input


3
9
9901
Sample Output


3
9
12
——————————————————————————————————————
int main()
{
    int n;
    while(1==scanf("%d",&n))
    {
        if(n%2==0&&n%5==0)
            break;
        else
        {
            long long  i=1,tot=1;
            while(i%n!=0)
            {
                i=i*10+1;
                ++tot;
            }
            printf("%I64d\n",tot);
        }

    }
    return 0;
}
求解释
搜索更多相关主题的帖子: 吃苹果 
2015-11-17 19:54
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:1 
这是不是要用到大数据除法?

能编个毛线衣吗?
2015-11-17 20:44
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:3 
回复 2楼 wmf2014
是,也不是。思想是大数除法的思想,但实际中不需要实现完整的大数运算。

这个题目的描述有问题,应该是“求能被n整除的只由1组成的整数(十进制)中最少包含多少个1”。

试试这段代码
程序代码:
#include<stdio.h>
int main()
{
    int n, i;
    long long t;
    for(; scanf("%d", &n) != EOF; printf("%d\n", i))
    for(i = t = 1; t % n; i++)
        t = t % n * 10 + 1;
    return 0;
}

重剑无锋,大巧不工
2015-11-17 21:32
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 3楼 beyondyf

数学能力稍低。还在想为什么是取余数+1.另:按你这个算法,t的最大值也是t%n+1=n,所以t不需要long long类型(vc还不识别),需要数据范围大的是i,它有可能自加出整形范围。

能编个毛线衣吗?
2015-11-18 09:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:2 
回复 4楼 wmf2014
[local]1[/local]
数学能力稍低。还在想为什么是取余数+1  ------ 就是小学学的除法竖立式子

t的最大值也是t%n+1 ------ 是 t%n*10+1

long long类型(vc还不识别)------ 换个高版本的vc试试

i,它有可能自加出整形范围。 ------ 我想用数字证明/证否,没成功。试着运行了一下,n=2147483629时, i=2147483628;没发现i>n的情况
2015-11-18 09:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:2 
图片附件: 游客没有浏览图片的权限,请 登录注册
x
2015-11-18 09:58
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 6楼 rjsp

万事就怕认真,感谢rjsp版主一语道破天机!

能编个毛线衣吗?
2015-11-18 10:11
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
受教了

一片落叶掉进了回忆的流年。
2015-11-18 11:56
wfoo
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:120
专家分:134
注 册:2011-8-6
收藏
得分:1 
回复 4楼 wmf2014
beyondyf无非就是用了一个数学里面的数列的公式,其实动态规划或者分治法也都是一样的原理,我的理解都是用数学归纳法或者(贪心算法只是数学归纳法的猜想)。
A1 = 1
A(n+1) = An * 10 + 1

A(n+1) mod n = (An * 10 + 1) mod n = (An mod n) * 10 + 1
beyondyf代码是把t初始化为0,按照上面的公式可知  t = t % n * 10 + 1,然后只要找到t能乘除n的时候i的值,就是对应的数列里面的项数。
2015-11-18 15:56
wfoo
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:120
专家分:134
注 册:2011-8-6
收藏
得分:1 
这个题目其实还有纯数学上的思路,
An = 111111..1  = 10**(n-1) + 10**(n-2) + ... 1 = (10**n - 1) / 9,
An mod n = 0的问题完全可以转化为 10**n == 1 mod m,(m的值由n决定,m=n或m=3*n或n=9*n)
欧拉定理: 若m,a互素,则a ** φ(m) == 1 mod m,
这样的话至少φ(m)是能满足条件的,至于是不是最小的那个数,我没去证明过。
2015-11-18 16:28
快速回复:出现了 TLE 怎么办 《YEAR,我就想吃苹果》
数据加载中...
 
   



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

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