0


洛谷 B2145 digit 函数 B2146 Hermite 多项式 题解

题目目录:

**No.1 B2145 digit 函数 **

**No.2 B2146 Hermite 多项式 **

OK,开始正文!

第一题:B2145 digit 函数

题目描述

在程序中定义一函数 digit(n,k),它能分离出整数 n 从右边数第 k 个数字。

输入格式

正整数 n 和 k。

输出格式

一个数字。

输入输出样例

输入 #1

31859 3

输出 #1

8

说明/提示

n≤10^9。

k≤10。

思路:

这里提供3种思路

思路1:

递归函数,具体见代码

思路2:

输入字符串,然后搞两下(第长度-k位)

思路3:

输入一个数,后面几位直接去掉

AC代码:

AC代码1:18行
#include<bits/stdc++.h>
using namespace std;
int sss(int n,int k)
{
    k--;
    if(!k)
    {
        return n%10;
    }
    return sss(n/10,k);
}
int main()
{
    int n,k;
    cin >> n >> k;
    cout<<sss(n,k);
    return 0;
}
AC代码2:10行
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    int k;
    cin >> s >> k;
    cout<<s[s.size()-k];
    return 0;
}
AC代码3:11行
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,k;
    cin >> n >> k;
    int y=pow(10,k-1);
    n/=y;
    cout<<n%10;
    return 0;
}

所以知道选哪个了吧,肯定2啊!(只有1符合题目要求,不过!AC就行,管他呢!)

第二题:B2146 Hermite 多项式

题目描述

求 Hermite 多项式的值。

对给定的 x 和正整数 n,求多项式的值。

输入格式

输入 n 和 x 。

输出格式

求多项式的值。

输入输出样例

输入 #1

1 2

输出 #1

4

说明/提示

(n≤8,x≤8)

思路:

递归模拟呗,只不过这形式有点恶心了......不全放一个括号里,非要另一个写下面

AC代码:

#include<bits/stdc++.h>
using namespace std;
int sss(int n,int x)
{
    if(n==0)
    {
        return 1;
    }
    else if(n==1)
    {
        return x*2;
    }
    return 2*x*sss(n-1,x)-2*(n-1)*sss(n-2,x);
}
int main()
{
    int n,x;
    cin >> n >> x;
    cout<<sss(n,x);
    return 0;
}

哦对了,不会有之前看过我文章的人不认识我了吧?对,没错,我改名了!Oh,AC!熟悉吗?不熟悉算了

标签: c++ 递归

本文转载自: https://blog.csdn.net/woshishabi0716/article/details/141018076
版权归原作者 清梦123456 所有, 如有侵权,请联系我们删除。

“洛谷 B2145 digit 函数 B2146 Hermite 多项式 题解”的评论:

还没有评论