题目目录:
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!熟悉吗?不熟悉算了