标题:ACM一道题目 求大神给出解答 解释或者代码都行 谢谢~~~~
只看楼主
qq873950124
Rank: 2
等 级:论坛游民
帖 子:5
专家分:34
注 册:2016-12-10
结帖率:50%
 问题点数:0 回复次数:6 
ACM一道题目 求大神给出解答 解释或者代码都行 谢谢~~~~
Problem Description
自从Czj上了初中,已经不再满足于从1数到100了,他打算来个高难度的挑战。
设a1=1,a2=11,有数列ai,任意1<i≤n,元素ai−1与其自身的最后一位数字组成了新的数字X(如233将会变成2333),而ai是X的最大质因子。由于Czj很懒,数到2333就觉得无聊而跑去写gc了。现在请你帮他完成这未竟的事业。
Input
第一行是一个正整数T(T<100),代表接下来有T次询问。
接下来的T行,每一行输入一个正整数i(1≤i≤104)。
Output
对于每次询问,你应该求出数组中的第i个元素ai,并以"Case #t: ai"的格式单独输出一行,不包括双引号。其中#t代表询问的编号。
Sample Input

3
5
6
7

Sample Output

Case #1: 23
Case #2: 233
Case #3: 2333

Author
SCNU20102200088
搜索更多相关主题的帖子: 正整数 初中 事业 元素 
2016-12-11 23:58
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
语文不好

这句话没懂

ai是X的最大质因子


[fly]存在即是合理[/fly]
2016-12-15 09:12
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
听得一头雾水
2016-12-15 12:11
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
突然明白了,X是临时数,ai质数列表


[此贴子已经被作者于2016-12-15 13:33编辑过]



[fly]存在即是合理[/fly]
2016-12-15 12:50
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
写了这个代码,自己看打印结果吧,循环节是26

程序代码:
//
// Created by azzbcc on 16-12-15.
//

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define LEN  2602

int len = 8;
int sss[LEN] = {2, 3, 5, 7, 11, 13, 17, 19};

bool isPrime(int n)
{
    for (int i = 0; sss[i] * sss[i] <= n; ++i)
    {
        if (n % sss[i] == 0) return false;
    }
    return true;
}

int getNextPrime()
{
    if (len == LEN) exit(-1);
    int n = sss[len - 1];
    while (!isPrime(n += 2));
    sss[len++] = n;
}

int getMaxFactor(int n)
{
    int pos = 0;

    while (n > 1)
    {
        while (0 == n % sss[pos]) n /= sss[pos];
        if (n == 1) return sss[pos];
        if (++pos >= len) getNextPrime();
    }
    return n;
}

int fun(int n)
{
    if (n < 2) return 1;

    int t = fun(n - 1);
    printf("%d, %d\n", n - 1, t);
    return getMaxFactor(t * 10 + t % 10);
}

int main(void)
{
    fun(104);
    printf("%d\n", len);
}


[此贴子已经被作者于2016-12-15 13:34编辑过]



[fly]存在即是合理[/fly]
2016-12-15 13:25
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
看懂题目了,原来1 11 37=111/3  29=3777/13   23=299/13  ……这样就可以理解了

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-15 14:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用九转星河在2016-12-15 14:06:31的发言:

看懂题目了,原来1 11 37=111/3  29=377/13   23=299/13  ……这样就可以理解了

出题的就是喜欢钻角尖。
2016-12-15 14:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-472291-1-1.html




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

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