模拟暴力解法失败,这个方法正确是正确的,但是提交的时候会运行超时

#include <stdio.h>
#include <iostream>
#pragma warning(disable:4996);
using namespace std;
const int maxn = 100010;
struct BigInteger {int digit[maxn];int length;BigInteger();BigInteger(int x);BigInteger(const BigInteger& b);BigInteger operator*(const BigInteger& b);BigInteger operator/(const BigInteger& b);BigInteger operator%(const BigInteger& b);BigInteger operator-(const BigInteger& b);bool operator<(const BigInteger& b);BigInteger convertToK(const BigInteger& k);int convertToint(const BigInteger& b);int sum();void printBigInteger();
};BigInteger::BigInteger()
{fill(digit, digit + maxn, 0);length = 0;
}BigInteger::BigInteger(const BigInteger& b)
{length = b.length;for (int i = 0; i < length; i++){digit[i] = b.digit[i];}
}BigInteger::BigInteger(int x)
{fill(digit, digit + maxn, 0);length = 0;while (x != 0){digit[length++] = x % 10;x /= 10;}
}bool BigInteger::operator<(const BigInteger& b)
{if (length < b.length)return true;if (length > b.length)return false;if (length == b.length){for (int i = length - 1; i >= 0; i--){if (digit[i] > b.digit[i])return false;}return true;}
}BigInteger BigInteger::operator-(const BigInteger& b)
{int carray = 0;BigInteger answer;answer.length = length;for (int i = 0; i < length; i++){int now = digit[i] - b.digit[i] - carray;carray = 0;if (now < 0){now = now + 10;carray = 1;}answer.digit[i] = now;}while (answer.digit[answer.length - 1] == 0 && answer.length > 1) {answer.length--;}return answer;
}BigInteger BigInteger::operator*(const BigInteger& b)
{BigInteger ans;ans.length = length + b.length;for (int i = 0; i < length; i++){for (int j = 0; j < b.length; j++){ans.digit[i + j] += digit[i] * b.digit[j];}}int carray = 0;for (int i = 0; i < ans.length; i++){int now = carray + ans.digit[i];ans.digit[i] = now % 10;carray = now / 10;}//如果还有进位if (carray > 0)ans.digit[ans.length++] = carray;//然后开始除掉多余的0while (ans.digit[ans.length-1] == 0 && ans.length > 1){ans.length--;}return ans;
}BigInteger BigInteger::operator/(const BigInteger& b)
{//从高位开始相除BigInteger answer;BigInteger remainder;answer.length = length;BigInteger tempB(b);for (int i = length - 1; i >= 0; i--){//看看余数的大小if (!(remainder.length == 1 && remainder.digit[0] == 0)){//如果remainder不是0的话for (int j = remainder.length - 1; j >= 0; j--){remainder.digit[j + 1] = remainder.digit[j];}remainder.length++;}remainder.digit[0] = digit[i];while (tempB < remainder){remainder = remainder - tempB;answer.digit[i]++;}}while (answer.digit[answer.length - 1] == 0 && answer.length > 1){answer.length--;}return answer;
}BigInteger BigInteger::operator%(const BigInteger& b)
{//从高位开始相除BigInteger answer;BigInteger remainder;answer.length = length;BigInteger tempB(b);for (int i = length - 1; i >= 0; i--){//看看余数的大小if (!(remainder.length == 1 && remainder.digit[0] == 0)){//如果remainder不是0的话for (int j = remainder.length - 1; j >= 0; j--){remainder.digit[j + 1] = remainder.digit[j];}remainder.length++;}remainder.digit[0] = digit[i];while (tempB < remainder){remainder = remainder - tempB;answer.digit[i]++;}}return remainder;
}int BigInteger::convertToint(const BigInteger& b)
{int ans = 0;int exp = 1;for (int i = 0; i < b.length; i++){ans += exp * b.digit[i];exp *= 10;}return ans;
}BigInteger BigInteger::convertToK(const BigInteger& k)
{BigInteger answer;BigInteger tempB(*this);while (!(tempB.length == 1 && tempB.digit[0] == 0)){BigInteger kkk = tempB % k;answer.digit[answer.length++] = convertToint(BigInteger(tempB % k));tempB = tempB / k;}return answer;
}
void BigInteger::printBigInteger()
{for (int i = length - 1; i >= 0; i--){printf("%d", digit[i]);}
}int BigInteger::sum()
{int answer = 0;for (int i = 0; i < length; i++){answer += digit[i];}return answer;
}BigInteger faseExp(int a, int b)
{BigInteger tempA(a);BigInteger Expans(1);while (b != 0){if (b % 2 == 1){Expans = Expans * tempA;}tempA = tempA * tempA;b = b / 2;}return Expans;
}void Root(BigInteger n, BigInteger k)
{if (n < k){n.printBigInteger();return;}else {BigInteger ansK = n.convertToK(BigInteger(k));int newN = ansK.sum();BigInteger N(newN);Root(newN, k);}
}int main()
{int a, b, k;scanf("%d %d %d", &a, &b, &k);BigInteger ans = faseExp(a, b);BigInteger BigK(k);Root(ans, k);}

KY16 求root(N, k)|模拟暴力解法相关推荐

  1. 求root(N,k)

    描述 题目描述 N < k时,root(N,k) = N,否则,root(N,k) = root(N',k).N'为N的k进制表示的各位数字之和.输入x,y,k,输出root(x^y,k)的值 ...

  2. c语言暴力求解法二维数组比较,【算法】搜索二维矩阵 暴力解法二分法 4种语言...

    编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1:输入:matrix = ...

  3. 求最长回文子串——C++ (动态规划+暴力解法)

    声明:本文原题主要来自力扣,记录此博客主要是为自己学习总结,不做任何商业等活动! 一.题目描述 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad&qu ...

  4. 可持久化Trie+堆优化 OR Trie树上求XOR第K大 ---- P5283 [十二省联考2019]异或粽子

    题目大意 题目大意: 考虑先做个 prefix xor 前缀异或bi=⨁j=1iaj(1≤i≤n)b_i=\bigoplus_{j=1}^{i}a_j(1\leq i \leq n)bi​=j=1⨁i ...

  5. 洛谷P2141珠心算测验 (枚举暴力解法)

    题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心斜体样式算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采用一种快速考察 ...

  6. 求二叉树第K层的节点个数+求二叉树叶子节点的个数

    size_t _FindLeafSize(Node* root)     //求二叉树叶子节点的个数     {         //static size_t count = 0;          ...

  7. leetcode 221. Maximal Square | 221. 最大正方形(优化的暴力解法+动态规划解法)

    题目 https://leetcode.com/problems/maximal-square/ 题解 方法1:最暴力解 O((m*n)^2) public class Solution {publi ...

  8. c++求区间第k大数_数组中求第K大数的实现方法

    问题:有一个大小为n的数组A[0,1,2,-,n-1],求其中第k大的数. 该问题是一个经典的问题,在<算法导论>中被作为单独的一节提出,而且其解决方法很好的利用了分治的思想,将时间复杂度 ...

  9. Greedy Sequence(2019南京icpc网络预选赛)主席树求区间小于k的最大值

    题意:给出n个整数,构造s1,s2,s3-sn s1,s2,s3-sns1,s2,s3-sn,si sisi满足五个条件 1.s1[i]=i s1[i]=is1[i]=i 2.对于1<j< ...

最新文章

  1. python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...
  2. 对于元组的访问 的优化访问方式
  3. 【最短路】hxk化学课
  4. jQuery源码分析系列
  5. ASP.NET MVC – 关于Action返回结果类型的事儿(上)
  6. C++入门经典-例7.8-const对象,标准尺寸
  7. wordpress 主机伪静态404.php seo,wordpress开启伪静态之后,出现404是什么原因?
  8. Apache Web Server - httpd 的长连接配置
  9. vue项目结构(未抽离成.vue文件前的结构)
  10. python实现excel单元格合并_python进行excel单元格合并逆操作
  11. webpack基本使用及配置
  12. python查找联系人_python ---简易联系人
  13. Python正则表达式匹配字符串中的数字
  14. QT实现简单的医院管理系统
  15. android底部弹出滚轮,Android-PickerView-master
  16. 【Linux运维-集群技术进阶】集群/分布式环境下5种session处理策略
  17. Excel表格打开文件提示内存或磁盘空间不足怎么解决
  18. Python代码自动排版工具(PEP8风格),autopep8
  19. kivy/buildozer打包
  20. 七牛云免费对象存储,并绑定到cloudreve中

热门文章

  1. dva框架二级路由刷新出现空白页
  2. Transactional 注解
  3. 生活随笔:遇到电梯吸烟烟鬼
  4. 3DMAX 6 游戏特效制作
  5. 一例ASP.net 网站‘此网页包含重定向循环’解决方法
  6. ROS学习(三)调用笔记本和usb外接摄像头
  7. kis服务器组装,登录金蝶kis专业版为什么会显示无效服务器?
  8. 创新模式探索:化妆品B2B电商系统迎来新机遇
  9. Jenkins周期构建触发器,定时任务(Build periodically)
  10. python数据爬取及数据可视化分析