
三题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。 展开
问题描述:
给一个正整数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。 展开
3个回答
展开全部
#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
展开全部
第一题:
#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;
}
追问
非常感谢!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
20分,20分,20分,~~~~
追问
???分少了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |