鱼C论坛

 找回密码
 立即注册
查看: 3080|回复: 5

[技术交流] 计算m的n次方

[复制链接]
发表于 2014-2-5 09:14:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 andalousie 于 2014-2-5 12:47 编辑

用于计算100000位以内的m的n次方
  1. #include<iostream>
  2. #include<string>

  3. std::string CalculateBigpower(int m, int n)
  4. {
  5.         int resulting[100001] = {0};
  6.         int front=1;
  7.         int back=1;
  8.         resulting[front]=1;
  9.         int carry=0;
  10.         for(int i=1;i<=n;i++)
  11.         {        
  12.                 int j;
  13.                 for(j=front; j<=back; ++j)
  14.                 {
  15.                         int temp = resulting[j];
  16.                         resulting[j] =  (resulting[j] * m + carry) % 10;
  17.                         carry = (temp * m + carry) / 10;
  18.                 }
  19.                 if(carry)
  20.                 {
  21.                         resulting[j] = carry;
  22.                         carry = 0;
  23.                         back++;
  24.                 }
  25.         }
  26.         std::string Numstring;
  27.         for(int i = back; i>0; i--)
  28.                 Numstring.append(1, resulting[i] + 48);
  29.         return Numstring;
  30. }

  31. int main()
  32. {
  33.         int m, n;
  34.         while(1)
  35.         {
  36.                 std::cin  >>  m  >>  n;
  37.                 std::string str = CalculateBigpower(m, n);
  38.                 std::cout << str << std::endl;
  39.         }
  40.         return 0;               
  41. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-2-5 09:45:14 | 显示全部楼层
可以用快速幂来算。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-5 10:31:57 | 显示全部楼层
既然都是100000以内的那可以用 long int 直接调用pow()不就好了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-5 11:54:51 | 显示全部楼层

是100000位以内,不是100000以内,拜托。据我所知内有一个整型可以这么长,能够算出2的9999次方。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-5 11:58:01 | 显示全部楼层
andalousie 发表于 2014-2-5 11:54
是100000位以内,不是100000以内,拜托。据我所知内有一个整型可以这么长,能够算出2的9999次方。

好吧 我看错了表生气啊  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-5 12:48:25 | 显示全部楼层
牡丹花下死做鬼 发表于 2014-2-5 11:58
好吧 我看错了表生气啊

不生气。你一说我又检查了一下。结果发现3的n次方出现了问题,现在改正了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-8 05:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表