题目描述
设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)
输入描述:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出描述:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
输入例子:
3 4 -5 2 6 1 -2 0
输出例子:
12 3 -10 1 6 0
思路:
简单思路,分门别类的处理可能出现的情况。
注意 : 数字间以空格分隔,但结尾不能有多余空格,注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
当系数项不是0,指数是0的时候 什么也不输出 ***如:3 4 -5 2 6 1 -2 0 对应输出是12 3 -10 1 6 0 (-2 0没对应的数字输出)
代码:
垃圾写法:
#include <iostream>
using namespace std;
void fun(int m, int n,int f)
{
if (m==0&&n==0&f==0)
cout <<"0 0"<< " ";
else if (m != 0 && n != 0&&f==0)
cout << m * n <<" "<< n - 1 << " ";
else if (m != 0 && n == 0 && f == 0)
cout <<" ";
else if (m != 0 && n != 0 && f == 1)
cout << m * n <<" "<<n - 1 <<endl;
}
int main()
{
int n;
int number[10000];
int num = 0;
while (scanf_s("%d",&n))
{
if (getchar()=='\n')
{
number[num++] = n;
break;
}
number[num++] = n;
}
//cout <<num<< endl;
//for (int i = 0; i < 10; i++)
//{
// cout <<number[i]<<" ";
//}
//cout <<endl;
int falg = 0;
for (int i = 0; i <num; i=i+2)
{
if (i == 0 && number[i] != 0 && number[i + 1] == 0)
{
cout << "0 0" << endl;
}
if ((i+1)==(num-1))
fun(number[i], number[i + 1],1);
else
fun(number[i], number[i + 1],0);
}
return 0;
}
//垃圾写法
优化:
输入 while (cin>>n>>e)
用flag 来判断是否为第一次输入 ,不是第一次则输出 空格
链接:https://www.nowcoder.com/questionTerminal/2dae0a77c03e40c595881bc5d6074dfc
来源:牛客网
//每次输两个数n,e,注意以下几点:
//1.第一次输入没有空格,之后输入之前都需要一个空格,flag判断是否第一次
//2.如果求导系数为零,则不输出,判断语句if (n*e)
//3.如果输入的为零多项式,flag=false,则输出0 0
#include <iostream>
using namespace std;
int main()
{
int n, e;
bool flag = false;
while (cin>>n>>e)
{
if (n*e)
{
if (flag)
cout<<" ";
cout<<n*e<<" "<<e-1;
flag = true;
}
}
if (!flag)
cout<<"0 0"<<endl;
system("pause");
return 0;
}
题目描述
NowCoder开了一家早餐店,这家店的客人都有个奇怪的癖好:他们只要来这家店吃过一次早餐,就会每天都过来;并且,所有人在这家店吃了两天早餐后,接下来每天都会带一位新朋友一起来品尝。于是,这家店的客人从最初一个人发展成浩浩荡荡成百上千人:1、1、2、3、5……现在,NowCoder想请你帮忙统计一下,某一段时间范围那他总共卖出多少份早餐(假设每位客人只吃一份早餐)。
输入描述:
测试数据包括多组。每组数据包含两个整数from和to(1≤from≤to≤80),分别代表开店的第from天和第to天。
输出描述:
对应每一组输入,输出从from到to这些天里(包含from和to两天),需要做多少份早餐。
输入例子:
1 10
2 8
36 80
思路:
斐波那契数列应用,如果 from == to 那就输出那天的人数。
代码:
#include <iostream>
long long number[81];
using namespace std;
void init()
{
number[0] = 0;
number[1] = 1;
number[2] = 1;
for (int i = 3; i <81; i++)
{
number[i] = number[i-1] + number[i - 2];
}
}
int main()
{
init();
int from, to;
while (scanf_s("%d%d",&from,&to)!=EOF)
{
if (from==to)
{
cout <<number[to]<<" ";
}
else if (from>to)
{
break;
}
else
{
long long num = 0;
for (int i = from; i <=to; i++)
{
num = number[i]+num;
//cout << number[i] << "--- "<< endl;
}
cout << num<< " ";
}
cout << endl;
}
return 0;
}