蓝桥杯打卡Day6


文章目录

  • N的阶乘
  • 基本算术
  • 整数查询

一、N的阶乘OI链接

本题思路: 本题是关于高精度的模板题。

cpp 复制代码
#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链接

**本题思路:**本题是高精度的模板题。

cpp 复制代码
#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链接

本题思路: 本题是高精度的模板题。

cpp 复制代码
#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;
}
相关推荐
Miraitowa_cheems5 小时前
LeetCode算法日记 - Day 73: 最小路径和、地下城游戏
数据结构·算法·leetcode·职场和发展·深度优先·动态规划·推荐算法
Swift社区6 小时前
LeetCode 400 - 第 N 位数字
算法·leetcode·职场和发展
007php00713 小时前
Docker 实战经验之关键文件误删恢复指南(一)
jvm·docker·云原生·容器·面试·职场和发展·eureka
莫叫石榴姐16 小时前
字节数开一面
大数据·数据仓库·职场和发展
测试老哥17 小时前
测试用例之正交试验法、功能图法
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
微笑尅乐18 小时前
三种思路彻底掌握 BST 判断(递归与迭代全解析)——力扣98.验证二叉搜索树
算法·leetcode·职场和发展
白云千载尽20 小时前
leetcode 2598 执行操作后最大MEX
算法·leetcode·职场和发展
爱吃生蚝的于勒1 天前
【Linux】零基础学会linux环境基础开发工具使用(yum,vim,makefile,gdb)
linux·服务器·数据结构·c++·蓝桥杯·编辑器·vim
熬了夜的程序员1 天前
【LeetCode】74. 搜索二维矩阵
线性代数·算法·leetcode·职场和发展·矩阵·深度优先·动态规划