用C#解决100钱买100鸡的数学题 技术文章
我们老师今天给我们布置了一个小作业,就是百钱买百鸡,具体的题目是这样的:
100元钱 要求买100只鸡
其中,
公鸡 5/只
母鸡 3/只
小鸡 1元*3只
求有几种组合?
明显题目中有三个未知数,用方程求解貌似不可能,因为答案肯定不为唯一.
好吧,我就用C#来做吧,开始,我们得定义三个变量吧, a-公鸡 ,b-母鸡 , c-小鸡 ,
条件就是:a+b+c=100(只) 而且还得同时满足 : 5*a+3*b+c/3=100(元)
那么,很明显,我们可以用 if语句 来搞定它! 打开我们的visual studio 2013 ,新建项目,下面是代码,我先贴下完整的代码,后面说一些注意的事项.
---------------------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 百钱买百鸡
{
class Program
{
static void Main(string[] args)
{
for (int a = 1; a <= 100; a++) //这里我们定义变量a为公鸡
for (int b = 0; b <= 100; b++) //定义变量b为母鸡
for (int c = 0; c <= 100; c++) //定义变量c为小鸡
if ((a + b + c) == 100 && (a * 5 + b * 3 + c / 3) == 100&&c%3==0) //这里是重点,我们用if循环来控制条件,如果达到条件就运行,否者就不运行.
Console.WriteLine("满足条件的有:{0},{1},{2},", a, b, c); //输出我们的三个变量的结果 { } { } { } { } } } }
然后 ctrl + F5 调试运行,OK,效果如下:
一共有三组,这是从100*100*100中结果中筛选出来的满足条件的,如果人工筛选,那工作量就太大了!但是程序却一闪而过就出来的,所以我们编程得有一种思想,让程序去解决问题,我们只需发布命令就行!
好了,下面说一下需要注意的地方:我们这编程的时候如果使用的是搜狗输入法,最好做如图所示的操作,
这样就可以大大的避免在编辑代码的时候输入中文符号,并因此而出现调试程序出现错误.
在我用 if语句 定义条件的时候,出现了这样一幕:
满足条件的有:3,20,77,
满足条件的有:4,18,78,
满足条件的有:7,13,80,
满足条件的有:8,11,81,
满足条件的有:11,6,83,
满足条件的有:12,4,84,
请按任意键继续. . .
很明显,这其中的组合又不满足的,因为小鸡的个数不可能是小数啊! 这是在最开始的时候没有想到的.......
我们在看出现这个问题的代码吧:
if ((a + b + c) == 100 && (a * 5 + b * 3 + c / 3) == 100) 可以看出,我们没有定义小鸡能被3整除.加&&c%3==0
最后变成: if ((a + b + c) == 100 && (a * 5 + b * 3 + c / 3) == 100&&c%3==0) 就完美解决了!
警惕互联网支付——Apple Pay也不例外 业界新闻
最近几年,互联网支付出现在我们身边。从嘀嘀打车、快的打车,到二维码支付,银行快捷支付。如今,苹果高调发布Apple Pay,传言银联正在接洽,大有普及之势。但是,作为消费者,我们还是应该有所警惕,看上很美的东西背后往往暗藏风险。
一、Apple Pay的指纹验证是否万无一失
从Apple Pay的验证方式来看,NFC加上指纹识别验证,看似完美无缺。但是我们要警惕的是,指纹也好,密码也好,人脸识别也好,归根结底是一组数据。
指纹信息同样是作为一组数据。虽然苹果对指纹信息做了严格的加密措施,采用了Secure Enclave进行保护,但是Secure Enclave也难保万无一失。虽然Secure Enclave可以设立安全区域,但是其中的数据并没有物理隔离(安全区域存储断电),而指纹识别的传感器所产生的数据在储存到安全区域前能否被截获也是问题,如果这种数据因为iTune或者网络支付等原因被上传到网络服务器则更加危险。所以只要是数据,就有被截获、复制、利用的可能。不能保证绝对安全。
对于传统的银行卡来说,本身是一个非智能的东西,没有谁能让银行卡运行程序。安全验证是通过银行的网络、移动通讯网络进行的,而读卡设备也是封闭的。第三方想在读卡设备上安装个木马是比较麻烦的。
手机则完全不同,手机是可以运行程序的。第三方木马如果进入手机,不仅仅可以截获你的密码,也可能截获你的指纹数据。而指纹数据,苹果的id,信用卡数据你都存储在手机里面,这就是太危险了。相当于姓名、账号、密码信息全部透明,黑客只要破解了你的手机,一切都没有了。
二、苹果本身的安全问题
棱镜门过去不久,国母的手机从苹果换成了Nubia。对于苹果公司来说,美国政府或者强力部门的调查都是不可抗拒的。
如果现在苹果的服务器被攻破,不过是泄露点艳照,如果Apple Pay流行以后,苹果的服务器再被攻破,那么全球苹果用户的金融安全将遭受到巨大威胁。对中国来说,让苹果Apply Pay流行,就意味着国家的金融安全交到了一家美国商业公司的黑箱,风险很大。
金融企业,一般内外网是物理断开的。除了网银等一些特意留出的通道,外网是无法通过互联网访问到银行核心数据的。而苹果公司的安全性是否达到了金融级别的要求?这很让人担心。
目前,大陆流行的移动支付本身就不是很安全,尤其是涉及到银行卡的快捷支付功能,经常出现用户被骗,银行卡被转空的案例。苹果Apply Pay普及后则更加让人担心。
三、移动支付方便,但要小心使用
不可否认,移动支付给我们带来了很多方便,但是给用户方便也就是给黑客方便。对于消费者而言,多一分警惕看好自己的钱包还是必要的。对于金额较大的银行卡,不要开通网上银行,更不要开通快捷支付,如果Apple Pay流行,也尽量不要关联。还是真人去银行柜台最安全。移支付的便捷,我们可以用专用的账户,不要放太多钱,即使被黑客破解无非损失个零钱。
移动支付,小心才能驶得万年船。