【PTA-乙级-详解】1010-一元多项式求导

【PTA-乙级-详解】1010-一元多项式求导,第1张

【PTA-乙级-详解】1010-一元多项式求导

题目:

解法1:
#include
using namespace std;
int main()
{
	//3 4 -5 2 6 1 -2 0
	int ji = 0, zhi = 0;
	cin >> ji >> zhi;
	bool flag = false;
	while (1)
	{
		// 只有指数不等于0 且基数不等于0才打印  且第一次时不打印空格 
		// 
		if (zhi)
		{
			if (flag) cout << " ";
			cout << ji * zhi << " " << zhi - 1;
		}
		if (!flag && zhi == 0)
		{
			cout << "0 0"; 
			break;
		}
		flag = true;
		char c;
		if ((c = getchar()) == 'n')
			break;
		cin >> ji >> zhi;
	}
	return 0;
}

分析与反思:

1.   自己的思想有点局限于数组了 导致这个题没写出来  

2.   这个题现在看来并不复杂 如果以两个整数两个整数的输入形式来说  :在不是零多项式的情况下: 指数不为0则输出  这里不用判断系数是不是0  按理说 系数是0 则肯定就不输出  但是题目说了:以指数递降方式输入多项式非零项系数和指数 也就是系数肯定不是0

3.  引入flag  用于判定这组整数是不是第一组整数  是 则不输出空格 不是则输出空格  且如果是零多项式  也需要flag辅助  因为只有第一次输入时是零多项式时  才会输出“0 0” 

4.  零多项式的条件是 1. 这是第一组数据 2. 指数为0 并不要求系数也为0  也就是如果f(x)=4 这个也是零多项式 (错过)

解法2:
#include
using namespace std;

int main()
{
    int a, b, flag = 0;
    while (1) 
    {
        cin >> a >> b;
        if (b)
        {
            if (flag)
                cout << ' ';
            else
                flag = 1;
            cout << a * b << ' ' << b - 1;
        }
        char c;
        if ((c = getchar()) == 'n')
            break;
    }
    if (!flag) 
        cout << 0 << ' ' << 0;
	return 0;
}

解法相差不多  自己看

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5711964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存