• 蓝桥杯打卡Day6



    文章目录

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

    一、N的阶乘OI链接

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

    1. #pragma GCC optimize(3)
    2. #include
    3. constexpr int N=1010;
    4. std::vector<int> a;
    5. std::vector<int> f[N];
    6. std::vector<int> mul(int b)
    7. {
    8. std::vector<int> c;
    9. int t=0;
    10. for(int i=0;isize();i++){
    11. t+=a[i]*b;
    12. c.push_back(t%10);
    13. t/=10;
    14. }
    15. while(t){
    16. c.push_back(t%10);
    17. t/=10;
    18. }
    19. a=c;
    20. return c;
    21. }
    22. int main()
    23. {
    24. std::ios::sync_with_stdio(false);
    25. std::cin.tie(nullptr);std::cout.tie(nullptr);
    26. a.push_back(1);
    27. f[0]={1};
    28. for(int i=1;i<=N;i++)
    29. f[i]=mul(i);
    30. int n;
    31. while(std::cin>>n){
    32. for(int i=f[n].size()-1;i>=0;i--) std::cout<
    33. std::cout<
    34. }
    35. return 0;
    36. }

    二、基本算术OI链接

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

    1. #include
    2. int add(std::vector<int> a,std::vector<int> b)
    3. {
    4. int t=0;
    5. int cnt=0;
    6. for(int i=0;isize()||isize();i++){
    7. if(isize()) t+=a[i];
    8. if(isize()) t+=b[i];
    9. if(t>=10) cnt++;
    10. t/=10;
    11. }
    12. return cnt;
    13. }
    14. int main()
    15. {
    16. std::ios::sync_with_stdio(false);
    17. std::cin.tie(nullptr);std::cout.tie(nullptr);
    18. while(true){
    19. std::string num1,num2;
    20. std::cin>>num1>>num2;
    21. if(num1=="0"&&num2=="0") break;
    22. std::vector<int> a,b;
    23. for(int i=num1.size()-1;i>=0;i--) a.push_back(num1[i]-'0');
    24. for(int i=num2.size()-1;i>=0;i--) b.push_back(num2[i]-'0');
    25. int res=add(a,b);
    26. if(res==0) std::cout<<"No carry operation."<
    27. else if(res==1) std::cout<" carry operation."<
    28. else std::cout<" carry operations."<
    29. }
    30. return 0;
    31. }

    三、整数查询OI链接

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

    1. #include
    2. std::vector<int> res={0};
    3. std::vector<int> add(std::vector<int> a)
    4. {
    5. int t=0;
    6. std::vector<int> c;
    7. for(int i=0;isize()||isize();i++){
    8. if(isize()) t+=res[i];
    9. if(isize()) t+=a[i];
    10. c.push_back(t%10);
    11. t/=10;
    12. }
    13. if(t) c.push_back(1);
    14. return c;
    15. }
    16. int main()
    17. {
    18. std::ios::sync_with_stdio(false);
    19. std::cin.tie(nullptr);std::cout.tie(nullptr);
    20. std::string num;
    21. while(true){
    22. std::cin>>num;
    23. if(num=="0") break;
    24. std::vector<int> a;
    25. for(int i=num.size()-1;i>=0;i--) a.push_back(num[i]-'0');
    26. res=add(a);
    27. }
    28. while(res.size()>1&&res.back()==0) res.pop_back();
    29. for (int i = res.size() - 1; i >= 0; -- i )
    30. std::cout << res[i];
    31. std::cout << std::endl;
    32. return 0;
    33. }
  • 相关阅读:
    cors 跨域问题 git pages 前后端分离 vue nest 问题 解决+总结
    ts随记:面向对象、泛型
    C语言进制转换(1112:进制转换(函数专题))
    [Mybatis-Plus笔记] MybatisPlus-05-id生成策略,多数据操作,逻辑删除
    SAP 物料分类账配置详解Part 2( 基于SAP S/4HANA1909 版本)
    96-MySQL高级
    详解编译和链接!
    es6.x和es7.x如何创建索引?
    【数学模型】TOPSIS
    如何制作自己的数字人
  • 原文地址:https://blog.csdn.net/qq_67458830/article/details/132804946