最新要闻
- 大众ID.7欧洲开启接单,这价格认真的吗?
- athlonii2500(athlonii)
- 10名遇难者身份均已确认!普里戈任证实遇难
- 官方:34岁前法国国脚恩宗齐加盟土超科尼亚体育
- 硚口、武昌3宗优质土地挂牌!
- 嘴哥大女儿比同学们高一个头 拉文媳妇:嘴哥基因发挥作用!
- 袋鼠成也米尔斯败也米尔斯 死亡之组形势逐渐明朗
- 俄联邦侦查委员会:确认普里戈任在特维尔州飞机失事事件中遇难
- 中国男篮今夜迎战塞尔维亚 赵继伟:我们不会再惧怕他们了
- 净水器家用什么牌子好
- 90%的人都踩过的家电坑 这些潜规则一定要知道
- 舒淇同款!OPPO Find N3 Flip明天发 网友:绝对是行业天花板 必须冲
- 为了试试有多痛:小伙让巨蜥疯狂撕咬10多分钟!
- 今日复牌!中国恒大上半年经营性亏损173.8亿 负债还有2.38万亿
- 《芭比》荣膺双冠王
- 江西赣县(关于江西赣县的基本详情介绍)
手机
⚽日职乙战报:权田修一离奇乌龙 秋田蓝闪电全场0射正 仍1-1平清水心跳
《支付宝》蚂蚁庄园2023年8月26日答案介绍
- ⚽日职乙战报:权田修一离奇乌龙 秋田蓝闪电全场0射正 仍1-1平清水心跳
- 《支付宝》蚂蚁庄园2023年8月26日答案介绍
- 疑似荣耀折叠屏手机 Magic Vs2 入网 支持 35W 快速充电
- 许纯美有多少钱 许纯美
- 牛栏山镇邮编 牛栏山镇
- 富丽华2023年上半年净利199.62万 同比减少21.25%
家电
【算法】用c#实现计算方法中的经典降幂优化策略,减少计算复杂度
对于给定的数组[x1,x2,x3,…,xn],计算幂的累积:x1^(x2^(x3^(…^xn))的最后一位(十进制)数字。
(资料图片仅供参考)
例如,对于数组[3,4,2],您的代码应该返回1,因为3^(4^2)=3^16=43046721。
结果的增长得快得令人难以置信。例如,9^(9^9)有超过3.69亿个数字。你计算的lastDigit必须有效地处理这些数字。
我们假设0^0=1,并且空列表的lastDigit等于1。
算法实现:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Numerics; 5 namespace Solution 6 { 7 public class Calculator 8 { 9 public static int LastDigit(int[] array) 10 {11 BigInteger t = 1;12 var arr = array.Reverse().ToList();13 14 foreach(var x in arr)15 {16 if(t < 4)17 t = BigInteger.Pow(x,int.Parse(t.ToString()));18 else19 {20 int exponent = int.Parse(BigInteger.ModPow(t,1,4).ToString()) + 4;21 t = BigInteger.Pow(x,exponent);22 }23 }24 25 return (int)BigInteger.ModPow(t,1,10);26 }27 }28 }
算法详解:
1 public static int LastDigit(int[] array) 2 { 3 BigInteger t = 1; // 初始化变量t为1,用于存储计算结果 4 var arr = array.Reverse().ToList(); // 将输入数组倒序并转换为列表 5 6 foreach(var x in arr) // 对列表中的每个元素进行循环遍历 7 { 8 if(t < 4) // 如果t小于4 9 t = BigInteger.Pow(x, int.Parse(t.ToString())); // 使用x的t次方更新t10 else // 如果t大于等于411 {12 int exponent = int.Parse(BigInteger.ModPow(t, 1, 4).ToString()) + 4; // 计算指数值,将t对4取模后加上413 t = BigInteger.Pow(x, exponent); // 使用x的exponent次方更新t14 }15 }16 17 return (int)BigInteger.ModPow(t, 1, 10); // 返回t对10取模的结果作为最后一位数字18 }
在代码中,判断if(t < 4)
的目的是为了处理指数较小的情况。当指数较小(小于4)时,直接使用BigInteger.Pow(x, int.Parse(t.ToString()))
计算x
的指数结果,并将结果赋给变量t
。
这是因为指数较小的情况下,计算结果不会非常大,可以直接使用BigInteger.Pow
方法进行计算。这种情况下,不需要进行额外的处理,直接将计算结果赋给t
即可。
而当指数较大(大于等于4)时,为了避免计算结果过大导致性能问题,代码使用了一种降幂优化策略。在这种情况下,通过计算t
的模 4 的结果(BigInteger.ModPow(t, 1, 4)
),并加上4,得到一个新的指数值exponent
。然后使用BigInteger.Pow(x, exponent)
计算x
的新指数结果,并将结果赋给t
。
因此,if(t < 4)
分支用于处理指数较小的情况,而else
分支用于处理指数较大的情况,并进行了一种优化策略来避免计算结果过大。这样可以在不牺牲性能的情况下,处理更大的指数值。
让我们通过一个示例来解释这个降幂计算过程。
假设我们有以下输入数据:- `x = 2`:底数为2。- `t = 10`:指数为10。
根据代码逻辑,我们首先检查指数是否大于等于4。在这种情况下,指数为10大于4,因此我们需要执行优化策略。
1. 计算 `t` 对 4 取模的结果: - `t_mod4 = t % 4 = 10 % 4 = 2` 这里我们使用 `%` 运算符来计算 `t` 对 4 取模的结果,得到 `2`。
2. 将 `t_mod4` 加上 4,得到新的指数值 `exponent`: - `exponent = t_mod4 + 4 = 2 + 4 = 6` 这里我们将 `t_mod4` 的结果 `2` 加上 4,得到新的指数值 `6`。
3. 计算 `x` 的新指数结果: - `new_t = BigInteger.Pow(x, exponent) = BigInteger.Pow(2, 6) = 64` 这里我们使用 `BigInteger.Pow` 方法计算 `x` 的新指数结果,即将底数 `2` 的指数值设为 `6`,得到 `64`。
4. 将新的指数结果赋给 `t`: - `t = new_t = 64` 我们将计算得到的新指数结果 `64` 赋给变量 `t`。
最后,我们得到的结果是 `t = 64`。这个结果将在后续的代码中继续使用,进行其他的计算或操作。
这就是当指数较大时,代码使用的优化策略的步骤。通过对指数取模并加上一个固定值,我们得到一个较小的指数值,以避免计算结果过大导致性能问题。
测试用例:
1 namespace Solution { 2 using NUnit.Framework; 3 using System; 4 5 public struct LDCase { 6 public int[] test; 7 public int expect; 8 public LDCase(int[] t, int e) { 9 test = t; 10 expect = e; 11 } 12 } 13 14 [TestFixture] 15 public class SolutionTest { 16 private static int CalculateLD(int[] array) { 17 int ans = 1; 18 for(int i=array.Length-1; i>=0;i--) { 19 int exp = ans; 20 if(ans >= 4) { 21 exp = ans%4+4; 22 } 23 int b = array[i]%4+4; 24 if(i == 0) { 25 b = array[i]%10; 26 } 27 else if(array[i] < 4) { 28 b = array[i]; 29 } 30 ans = (int)(Math.Pow(b, exp)); 31 } 32 return ans%10; 33 } 34 35 [Test] 36 public void SampleTest() { 37 LDCase[] allCases = new LDCase[] { 38 new LDCase(new int[0], 1), 39 new LDCase(new int[] {0,0}, 1), 40 new LDCase(new int[] {0,0,0}, 0), 41 new LDCase(new int[] {1,2}, 1), 42 new LDCase(new int[] {3,3,1}, 7), 43 new LDCase(new int[] {3,3,2}, 3), 44 new LDCase(new int[] {3,5,3}, 3), 45 new LDCase(new int[] {3,4,5}, 1), 46 new LDCase(new int[] {4,3,6}, 4), 47 new LDCase(new int[] {7,6,1}, 9), 48 new LDCase(new int[] {7,6,2}, 1), 49 new LDCase(new int[] {7,6,21}, 1), 50 new LDCase(new int[] {12,30,21}, 6), 51 new LDCase(new int[] {2,0,1}, 1), 52 new LDCase(new int[] {2,2,2,0}, 4), 53 new LDCase(new int[] {2,2,101,2},6), 54 new LDCase(new int[] {4,0}, 1), 55 new LDCase(new int[] {3,0,0}, 3), 56 new LDCase(new int[] {2,2,1}, 4), 57 new LDCase(new int[] {2,2,1,2}, 4), 58 new LDCase(new int[] {3,3,0,0}, 7), 59 new LDCase(new int[] {3,4,0}, 3), 60 new LDCase(new int[] {3,2,1,4,4},9), 61 new LDCase(new int[] {5,0}, 1), 62 new LDCase(new int[] {2,3,2}, 2), 63 new LDCase(new int[] {82242,254719,736371}, 8), 64 new LDCase(new int[] {937640,767456,981242}, 0), 65 new LDCase(new int[] {123232,694022,140249}, 6), 66 new LDCase(new int[] {499942,898102,846073}, 6), 67 new LDCase(new int[] {837142,918895,51096}, 2), 68 new LDCase(new int[] {625703,43898,614961,448629}, 1), 69 new LDCase(new int[] {2147483647,2147483647,2147483647,2147483647}, 3) 70 }; 71 for(int i=0; i关键词:
【算法】用c#实现计算方法中的经典降幂优化策略,减少计算复杂度
海口港口汽车客运站将于8月31日整体关闭
美国佛州发生枪击事件3名黑人丧生
李义珣(对于李义珣简单介绍)
下周解禁市值近756亿元 4只新股发行 机构:超跌反弹概率逐渐增大
护群众“钱袋子”!舞钢农商银行持续开展反诈宣传活动守
2023全国电动冲浪板联赛(河北曹妃甸站)举办
⚽日职乙战报:权田修一离奇乌龙 秋田蓝闪电全场0射正 仍1-1平清水心跳
新疆兵团司法局评选表彰优秀人民调解组织、人民调解员
魏延安来黄龙督导检查安全生产和防汛工作
《支付宝》蚂蚁庄园2023年8月26日答案介绍
疑似荣耀折叠屏手机 Magic Vs2 入网 支持 35W 快速充电
资深“蟋蟀捕手”玉米地“淘金”月入过万,传授“终极教程”:捡大的逮就是了
大众ID.7欧洲开启接单,这价格认真的吗?
athlonii2500(athlonii)
特级后备班开展集中专题研修
宁德市古民居文化建设有限公司(关于宁德市古民居文化建设有限公司简述)
中直股份上半年净利润为1.26亿,同比增长632.48%
三部门开展“送政策进军营用真情暖兵心”活动
《命令与征服:军团》移动版发布 年内上线
科隆:《碧蓝幻想:Relink》明年2月1日推出
下周解禁市值近756亿元 4只新股发行 机构:超跌反弹概率逐渐增大
10名遇难者身份均已确认!普里戈任证实遇难
锈铁42|妖刀的真相被揭开,刀里有诅咒,名曰“不想死、不甘心”
寻味中国|悠悠羽扇,“扇”出国潮风起
许纯美有多少钱 许纯美
深创投今年已收获20家投资企业IPO 成立24年累计创造587亿元投资回报 投中科创板54家 市占率9%
牛栏山镇邮编 牛栏山镇
无线传感器网络结构和osi参考模型的关系 无线传感器网络结构
五年级上册数学书北师大版 五年级上册数学书
百望山森林公园门票预约 百望山森林公园
《天官赐福》弯刀厄命、芳心若绫,兵器之下,是主人的泪与血
语音翻译(语音)
《流放之路》牛甲掉落的具体位置
官方:34岁前法国国脚恩宗齐加盟土超科尼亚体育
证监会拟适当延长发股类重组项目财务资料有效期
硚口、武昌3宗优质土地挂牌!
英伟达显卡利润夸张:H100能狂赚1000%!消息称明年出货至少增加2倍
北京本地人都爱去的老街,藏于闹市吃喝玩乐全有,小众景点很多!
宏力达:董事长提议3000万至6000万元回购股份
富丽华2023年上半年净利199.62万 同比减少21.25%
2023年8月26日云南省山药批发价格行情
2023中国国际生态竞争力峰会将在承德召开
中微公司上半年净利润翻番,三位美籍核心技术人员被调出名单|硅基世界
聪明反被聪明误,出租车司机盗窃醉酒乘客手机,难逃宝山民警火眼金睛
正能量短句 正能量短句 励志
小松鼠的耳朵有什么作用 小松鼠的耳朵有什么作用和特点
广德市卢村乡:圆古稀老人“婚纱”梦
26个方面发力!遂宁高新区营商环境对标跨越这样干
内战王!28岁国乒名将3比0横扫樊振东,网友:一打张本智和就跪
重磅!证监会刚刚表示:调降融资保证金比例、阶段性收紧IPO节奏、规范股份减持
河南一男子开挖掘机,拍死派出所副所长,现在结果如何?
暖暖不请狼自来全文阅读 暖暖不请狼自来
特效法力药水图纸任务怎么做 特效法力药水
qq飞车t2光明骑士很差吗(qq飞车t2光明骑士)
什么情况下不让结婚了
林俊杰回复Angelababy 梦回可惜没有如果
平安建设怒斥平安银行和平安建投互相勾结
嘴哥大女儿比同学们高一个头 拉文媳妇:嘴哥基因发挥作用!
南京大学国际同位素效应研究中心揭牌仪式举行
暑期培训蓄能量 天府七中教育集团新教师培训干货满满
滨州学院乘务学院毕业后好找工作吗?
问说文言文翻译及注释(问说文言文翻译)
北美之光!EG成为无畏契约历史上首支北美冠军战队
广汽本田缤智限时优惠:直降1.3万元
售价36.88万元起 全新林肯航海家混动版上市
争光股份:未直接涉及核废水处理业务
证监会:进一步规范股份减持行为
袋鼠成也米尔斯败也米尔斯 死亡之组形势逐渐明朗
俄联邦侦查委员会:确认普里戈任在特维尔州飞机失事事件中遇难
俄联邦侦查委员会:确认普里戈任在特维尔州飞机失事事件中遇难
中国正能量:让网络空间与时代脉动同频共振
对话腾竞体育无畏契约电竞负责人冯骁:做女子电竞的“改变者”
远洋渔业安全生产 实操实战演练举行
LCK四支种子队伍年龄一览:最大与最小选手相差十岁
中国男篮今夜迎战塞尔维亚 赵继伟:我们不会再惧怕他们了
康冠科技副总孙建华年薪246万是副总凌峰3倍多 为何差距这么大?
探讨人工智能前景,AI-3D造物展在广州天河开展
咸宁市商务领域企业“红名单”公布 53家企业上榜
山西省发改委在孝义市调研新型城镇化国家示范县建设工作
离石区中医院:帮扶义诊进乡村 守护健康促振兴
成都城乡居民住院和门诊特殊病报销比例是多少
净水器家用什么牌子好
大连时代广场 中国网友把时代广场大屏占领了 基本情况讲解
神秘月球南极,藏有多少奥秘?
科技助力我市秋粮丰产丰收
90%的人都踩过的家电坑 这些潜规则一定要知道
舒淇同款!OPPO Find N3 Flip明天发 网友:绝对是行业天花板 必须冲
为了试试有多痛:小伙让巨蜥疯狂撕咬10多分钟!
今日复牌!中国恒大上半年经营性亏损173.8亿 负债还有2.38万亿
《芭比》荣膺双冠王
独家丨蔡卓妍遭夺爱C小姐真身曝光!“备胎”陈静正印梦被截糊
全网推荐CSGO开箱平台有哪些 盘点2023最新CSGO开箱网
中国银河:给予中国中车买入评级
我省夏粮收购进入扫尾阶段
“科技联姻”助力“南三青蟹”产业发展
突发!通知已下发:高中生及家长彻底沸腾了!8月27日开始!
寒蝉鸣泣之时零_关于寒蝉鸣泣之时零介绍
潢川农商银行:“三链协同”助推绿色金融发展
实地调研:逆势增长仍感焦虑,受困“童车之都”何以破局?