文章目录
- N的阶乘
- 基本算术
- 整数查询
一、N的阶乘OI链接
本题思路:本题是关于高精度的模板题。
#pragma GCC optimize(3)
#include <bits/stdc++.h>
constexpr int N=1010;
std::vector<int> a;
std::vector<int> f[N];
std::vector<int> mul(int b)
{
std::vector<int> c;
int t=0;
for(int i=0;i<a.size();i++){
t+=a[i]*b;
c.push_back(t%10);
t/=10;
}
while(t){
c.push_back(t%10);
t/=10;
}
a=c;
return c;
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);std::cout.tie(nullptr);
a.push_back(1);
f[0]={1};
for(int i=1;i<=N;i++)
f[i]=mul(i);
int n;
while(std::cin>>n){
for(int i=f[n].size()-1;i>=0;i--) std::cout<<f[n][i];
std::cout<<std::endl;
}
return 0;
}
二、基本算术OI链接
本题思路:本题是高精度的模板题。文章来源:https://www.toymoban.com/news/detail-707379.html
#include <bits/stdc++.h>
int add(std::vector<int> a,std::vector<int> b)
{
int t=0;
int cnt=0;
for(int i=0;i<a.size()||i<b.size();i++){
if(i<a.size()) t+=a[i];
if(i<b.size()) t+=b[i];
if(t>=10) cnt++;
t/=10;
}
return cnt;
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);std::cout.tie(nullptr);
while(true){
std::string num1,num2;
std::cin>>num1>>num2;
if(num1=="0"&&num2=="0") break;
std::vector<int> a,b;
for(int i=num1.size()-1;i>=0;i--) a.push_back(num1[i]-'0');
for(int i=num2.size()-1;i>=0;i--) b.push_back(num2[i]-'0');
int res=add(a,b);
if(res==0) std::cout<<"No carry operation."<<std::endl;
else if(res==1) std::cout<<res<<" carry operation."<<std::endl;
else std::cout<<res<<" carry operations."<<std::endl;
}
return 0;
}
三、整数查询OI链接
本题思路:本题是高精度的模板题。文章来源地址https://www.toymoban.com/news/detail-707379.html
#include <bits/stdc++.h>
std::vector<int> res={0};
std::vector<int> add(std::vector<int> a)
{
int t=0;
std::vector<int> c;
for(int i=0;i<res.size()||i<a.size();i++){
if(i<res.size()) t+=res[i];
if(i<a.size()) t+=a[i];
c.push_back(t%10);
t/=10;
}
if(t) c.push_back(1);
return c;
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);std::cout.tie(nullptr);
std::string num;
while(true){
std::cin>>num;
if(num=="0") break;
std::vector<int> a;
for(int i=num.size()-1;i>=0;i--) a.push_back(num[i]-'0');
res=add(a);
}
while(res.size()>1&&res.back()==0) res.pop_back();
for (int i = res.size() - 1; i >= 0; -- i )
std::cout << res[i];
std::cout << std::endl;
return 0;
}
到了这里,关于蓝桥杯打卡Day6的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!