三题C/C++题,急!满意加分!!

生成数列(sequence)问题描述:给一个正整数x,由x可以一个数列{an}:a1=x,ai=ai-1+f(ai-1),其中f(x)为x的各位数字之和。如x=12,则a... 生成数列(sequence)
问题描述:
给一个正整数x,由x可以一个数列{an}:a1=x,ai=ai-1+f(ai-1),其中f(x)为x的各位数字之和。如x=12,则a1=12,a2=12+1+2=15,a3=15+1+5,……。下面计算这个数列的第n项值。
输入格式:
第一行为正整数t(≤100),表示测试数据组数;接下来t行,每行为两个正整数x(<10000)和n(<100000)。
输出格式:
对于每组数据,输出对应数列的第n项。
输入样例
2
12 5
33 9

输出样例
30
114

天平(balance)
问题描述:
有一架特殊的天平,砝码全部是由p的方幂组成,每种只有一枚。现规定只能必须用k枚砝码,计算重量在[x,y]之间的物品,一共有多少个可以被这架天平称重。
输入格式:
第一行为正整数t(≤100),表示数据组数;接下来t行,每行四个正整数p,k,x,y。意义如上表示,2≤p≤10,1≤k≤20,1≤x≤y≤105。
输出格式:
对于每组数据,输出可以被称重的物品数。
输入样例
2
2 2 15 20
8 3 10000 20000

输出样例
3
0

样例解释:
数据1中,17=1+16=20+24;18=2+16=21+24;20=4+16=22+24;因此15~20中,只有这3个满足条件。
Gibonacci数列(gibonacci)
问题描述:
Fibonacci数列是众所周知的,F(0)=1, F(1)=1, F(n)=F(n-1)+F(n-2) (n>1)。我们修改其中一个规则,称为Gibonacci数列:G(0)=1, G(1)=t, G(n)=G(n-1)+G(n-2) (t≥1,n>1)。下面我们来求Gibonacci数列中的一些数。
输入格式:
第一行为正整数t(≤100),表示数据组数;接下来t行,每行包括三个正整数:i,G(i),j,表示项数i,G(i)和项数j,其中i,j≤20,G(i)≤106。
输出格式:
对于每组数据,根据给定的i和G(i),求出相应的G(j),如果不存在合理的t使得G(i)和i匹配,则输出-1。
注意:
结果要使用long long类型。
输入样例
4
1 1 2
3 5 4
3 4 6
12 17801 19

输出样例
2
8
-1
516847
第一题问题描述修改:
问题描述:
给一个正整数x,由x可以一个数列{a[n]}:a[1]=x,a[i]=a[i-1]+f(a[i-1]),其中f(x)为x的各位数字之和。如x=12,则a1=12,a2=12+1+2=15,a3=15+1+5,……。下面计算这个数列的第n项值。

第二题输入格式修改:
输入格式:
第一行为正整数t(≤100),表示数据组数;接下来t行,每行四个正整数p,k,x,y。意义如上表示,2≤p≤10,1≤k≤20,1≤x≤y≤10^5。

样例解释修改:
数据1中,17=1+16=2^0+2^4;18=2+16=2^1+2^4;20=4+16=2^2+2^4;因此15~20中,只有这3个满足条件。

第三题输入格式修改:
第一行为正整数t(≤100),表示数据组数;接下来t行,每行包括三个正整数:i,G(i),j,表示项数i,G(i)和项数j,其中i,j≤20,G(i)≤10^6。
展开
 我来答
旅春冬TJ
2015-08-28 · TA获得超过1082个赞
知道大有可为答主
回答量:1271
采纳率:66%
帮助的人:525万
展开全部
#include <iostream>
#include <string>
#include<cstdlib>
#include<vector>
using namespace std;

int sumOfNumber(int number){
int sum = 0;
while (number % 10){
sum += number % 10;
number /= 10;
}
return sum;
}

int sumOfSequence(int start, int n){
int prevous = start;
int i = 0;
while (++i < n){
prevous += sumOfNumber(prevous);
}
return prevous;
}
int main()
{
cout << sumOfSequence(33, 9) << endl;
return 0;
}
追问
我加了freopen样例输出不对啊。我在cout前面加的freopen,测试样例只输出114
liruih8121099
游戏玩家

推荐于2016-03-21 · 游戏我都懂点儿,问我就对了
知道小有建树答主
回答量:561
采纳率:75%
帮助的人:182万
展开全部

第一题:

#include <iostream>
#include <string>
#include<cstdlib>
#include<vector>
using namespace std;

long long sumOfNumber(long long number){
    long long sum = 0;
    while (number % 10){
        sum += number % 10;
        number /= 10;
    }
    return sum;
}

long long sumOfSequence(long long start, long long n){
    long long prevous = start;
    long long i = 0;
    while (++i < n){
        prevous += sumOfNumber(prevous);
    }
    return prevous;
}

int main()
{
    int t;
    long long x,n;
    cin >> t;
    while(t--) {
        cin >> x >> n;
        cout << sumOfSequence(x, n) << endl;
    }
    return 0;
}

第二题:

#include <stdio.h>

int main()
{
    int k,p,x,y,total,t,i,tmp,ans,flag;
    scanf("%d",&t);
    while(t--) {
        ans = 0;
        scanf("%d%d%d%d", &p, &k, &x, &y);
        for(i = x; i <= y; i++) {
            tmp = i;
            total = 0;
            flag = 1;
            while(tmp) {
                if(tmp % p > 1) flag = 0;
                total += tmp % p;
                tmp /= p;
            }
            if(total == k && flag) ans++;
        }
        printf("%d\n", ans);
    }
    return 0;
}

第三题:

#include <stdio.h>

long long f[30];

int main()
{
    int i, j, t;
    long long gi,tmp;
    f[0] = 1;
    f[1] = 1;
    for(i = 2; i < 30; i++) {
        f[i] = f[i-1] + f[i-2];
    }
    scanf("%d", &t);
    while(t--) {
        scanf("%d%lld%d", &i, &gi, &j);
        tmp = gi - f[i-2];
        if(i == 1) printf("%lld\n", f[j-2] + gi * f[j-1]);
        else if(tmp % f[i-1]) puts("-1");
        else printf("%lld\n", f[j-2] + tmp / f[i-1] * f[j-1]);
    }
    return 0;
}
追问
非常感谢!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
merlindlut
2015-08-28 · TA获得超过422个赞
知道小有建树答主
回答量:945
采纳率:0%
帮助的人:416万
展开全部
20分,20分,20分,~~~~
追问
???分少了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式