100铜币=1银 100银=1金

想写个根据多少铜币 返回相应等级的钱

比如参数为102135铜币 那就是返回10金21银35铜

比如参数为1544铜币 那就是返回15银44铜

以此类推...

php基础不扎实 不知道怎么写最精简

回复内容:

100铜币=1银 100银=1金

想写个根据多少铜币 返回相应等级的钱

比如参数为102135铜币 那就是返回10金21银35铜

比如参数为1544铜币 那就是返回15银44铜

以此类推...

php基础不扎实 不知道怎么写最精简

/**

* [format_every 换算进制到指定单位]

* @param integer $number [需要换算数值]

* @param integer $ary [每个单位之间的进制]

* @param array $units [每个单位的描述]

* @return [String] [格式化结果]

*/

function format_every($number,$ary = 100,$units = array('铜', '银', '金')) {

$format = '';

$prev = 0;

for($i = count($units) - 1 ; $i >= 0 ; $i--){

if($next = floor($number / pow($ary, $i))){

$format .= $next - $prev * $ary . $units[$i];

}

$prev = $next;

}

return $format;

}

//简单点的

print_r(format_every(12345678));//1234金56银78铜

//假如1坨=100金,则:

print_r(format_every(12345678,100,array('铜', '银', '金','坨')));//12坨34金56银78铜

//字节换算

print_r(format_every(123456789,1024,array('B', 'KB', 'MB', 'GB', 'TB', 'PB')));//117MB755KB277B

function exchange($copper)

{

$gold = (int) ($copper / 10000);

$silver = (int) ($copper / 100 - $gold * 100);

$copper = $copper % 100;

return array($gold, $silver, $copper);

}

简单做。从额数最大的金开始处理,先整除,再模除,金银铜依次处理。输出的时候判断再做个判断,代码如下:

0) {

$result .= $gold ."金";

}

if($sliver > 0) {

$result .= $sliver ."银";

}

if($cu > 0) {

$result .= $cu ."铜";

}

return $result;

}

//test

echo level(102135);

echo "";

echo level(1544);

echo "";

echo level(99);

function level($money){

$ag = floor($money /100);

$cu = $money % 100;

$golden = floor($ag / 100);

$ag = $ag % 100;

echo "{$golden}金{$ag}银{$cu}铜币";

}

很简单的写了一个。

def make_change(money, coins)

dp = [0]

path = []

result = {}

coins.each_with_index do |coin, index|

coin.upto(money) do |i|

if !dp[i - coin].nil? && (dp[i].nil? || dp[i - coin] + 1 < dp[i])

dp[i] = dp[i - coin] + 1

coins[index] += 1

path[i] = i - coin

end

end

end

if path[money].nil?

puts "impossible." and return

end

i = money

loop do

break if path[i].nil?

result[i - path[i]] ||= 0

result[i - path[i]] += 1

i = path[i]

end

p result # 具体解

end

make_change(102135, [10000, 100, 1])

# => {1=>35, 100=>21, 10000=>10}

嗯...不知道计算速度快 还是字符串截取速度快

结果: 10金币21铜币35银币

function change($number){

static $jin;

static $yin;

static $ton;

if($number >= pow(10,4)){

$jin = intval($number/pow(10,4));

change($number -$jin*pow(10,4));

}else if($number >= pow(10,2)){

$yin = intval($number/pow(10,2));

change($number-$yin*pow(10,2));

}else{

$ton = $number;

}

return array($jin,$yin,$ton);

}

$number = 10110245;

print_r(change($number));

/**

* @param $coins int 币数

* @return string 格式化信息

*/

function coinFormatter($coins)

{

$coins = intval($coins);

$jin = intval($coins/10000);

$yin = intval($coins/100 - $jin*100);

$tong = $coins%100;

$info = '';

if($jin>0) {

$info = $jin . "金";

}

if($yin>0){

$info = $info.$yin."银";

}

if($tong >0){

$info = $info.$tong."铜";

}

return $info;

}

echo coinFormatter(114523);

echo "\n";

echo coinFormatter(523);

echo "\n";

echo coinFormatter(3);

/*

输出结果:

11金45银23铜

5银23铜

3铜

*/

关注微信公众号php技术大全:phpgod,精彩分享每日不断。

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php实现金币提现,哪位php大神帮忙写个金币转换函数相关推荐

  1. 秒表c语言程序代码,求大神帮忙写一篇简单的C语言秒表程序, 谢谢。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include Unsigned char code Tab[10]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0 ...

  2. java写一个窗体并连接MySQL_大神帮忙写一个简单地java页面,连接MySQL数据库之后能够显示数据库上的数据...

    展开全部 用jdbc 连接mysql数据库就行了,网上搜下一大把. --记得在classpath下加入mysql 的jdbc驱动包. /** * @author :来e68a84e8a2ad32313 ...

  3. 复旦和浙大计算机考研难度,复旦计算机惊现40多位400+大神,浙大、川大还有450+...

    原标题:复旦计算机惊现40多位400+大神,浙大.川大还有450+ 今天多个省份开放了考研初试查询系统,看着网上晒出的分数不得不说考研太难了,复旦的计算机今年大神扎堆,400+的大神就有40多位,最高 ...

  4. 大神的自动练法师技能,想单独提取,练火星球到 75熟练度,,求大神帮忙提取下。

    大神的自动练法师技能,想单独提取,练火星球到 75熟练度,,求大神帮忙提取下. 2014-04-26 00:50:02| 分类: assa 脚本范文列 |字号 订阅 下载LOFTER我的照片书 | d ...

  5. 拱猪java,有没有大神帮忙解决一下这个项目启动报错的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2018-07-10 15:36:34 [localhost-startStop-1] - [ERROR] Context initialization ...

  6. 拱猪java_有没有大神帮忙解决一下这个项目启动报错的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2018-07-10 15:36:34 [localhost-startStop-1] - [ERROR] Context initialization ...

  7. aoc显示器开机显示计算机,_求各路大神帮忙解决,配置如下 电脑开机AOC显示器显示无信号,每次都要重新拔了再插才有画面_...

    网友求助:_求各路大神帮忙解决,配置如下 电脑开机AOC显示器显示无信号,每次都要重新拔了再插才有画面_ 问题求各路大神帮忙解决,配置如下 电脑开机AOC显示器显示无信号,每次都要重新拔了再插才有画面 ...

  8. matlab gm 1 1,MATLAB 如何用GM(1,1)做预测?请大神帮忙!

    怎么用GM(1,1)做预测?前15组建模 后3组验证 求大神帮忙 X1                X2           X3            X4         X5          ...

  9. java主界面设置背景图片_java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改)...

    java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改) 关注:223  答案:4  mip版 解决时间 2021-01-26 22:09 提问者非莪莫属 2021-01 ...

最新文章

  1. ubuntu14.04下使用A3E生成satg配置
  2. python grpc_python中grpc的使用示例
  3. windows系统连接***后不能上网
  4. java编写斐波那契数列,实战案例
  5. 任意文件上传之绕过云waf+本地防火墙双重防护
  6. 零中频接收机频率转换图_【鼎阳硬件智库原创︱频谱分析仪】频谱分析仪应用解惑之频率分辨力...
  7. App后台开发运维和架构实践学习总结(13)——OAuth 2.0 概述流程理解
  8. 想要轻松入门数据分析,这些知识不得不看!
  9. 7-1 购买火车票 (15 point(s))
  10. mysql double 和Oracle,oraclemysql对比
  11. ECLIPSE远程调试TOMCAT.
  12. ie11不兼容java_解决ie11不兼容的多个方法
  13. KindEditor实现上传图片与回显
  14. 学习笔记(三):WiFi-Sleep
  15. spss入门——简单的数据预处理到时间序列分析系列(五)
  16. mysql 语法大全
  17. 库克是个挺不错的接班人,但是苹果公司的价值已经见顶
  18. 使用MATLAB2010实现AVI视频播放
  19. 1144_Docker的基本介绍
  20. 用户研究方法定性定量_用户体验测试:定性测试

热门文章

  1. Allegro PCB Design GXL (legacy) 16.6 - 使用泪滴之后,删除泪滴导致出现的异常
  2. 医疗核心关键词排名,为什么说要用百家号做
  3. pythonidle如何调字体_python IDLE 背景以及字体的修改
  4. Efficient Parameter-free Clustering Using First Neighbor Relations
  5. 神经网络反向传播的作用,双向传播的神经网络
  6. python展开阅读全文_展开阅读全文 js 爬虫操作
  7. 查找论文对应开源代码的神器(Papers with Code)
  8. python爬虫之多线程、多进程爬虫
  9. OpenCV中的马赛克效果
  10. wechall靶场training系列通关记录