速算,以后留着教孩子。

超级大笨狼 2010-04-13 11:29:26
速算,以后留着教孩子。
1.十几乘十几:
口诀:头乘头,尾加尾,尾乘尾。
例:12×14=?
解: 1×1=1
2+4=6
2×4=8
12×14=168
注:个位相乘,不够两位数要用0占位。

2.头相同,尾互补(尾相加等于10):
口诀:一个头加1后,头乘头,尾乘尾。
例:23×27=?
解:2+1=3
2×3=6
3×7=21
23×27=621
注:个位相乘,不够两位数要用0占位。

3.第一个乘数互补,另一个乘数数字相同:
口诀:一个头加1后,头乘头,尾乘尾。
例:37×44=?
解:3+1=4
4×4=16
7×4=28
37×44=1628
注:个位相乘,不够两位数要用0占位。

4.几十一乘几十一:
口诀:头乘头,头加头,尾乘尾。
例:21×41=?
解:2×4=8
2+4=6
1×1=1
21×41=861

5.11乘任意数:
口诀:首尾不动下落,中间之和下拉。
例:11×23125=?
解:2+3=5
3+1=4
1+2=3
2+5=7
2和5分别在首尾
11×23125=254375
注:和满十要进一。

6.十几乘任意数:
口诀:第二乘数首位不动向下落,第一因数的个位乘以第二因数后面每一个数字,加下一位数,再向下落。
例:13×326=?
解:13个位是3
3×3+2=11
3×2+6=12
3×6=18
13×326=4238
注:和满十要进一。
...全文
115 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级大笨狼 2010-05-14
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
int n = 100;//一百万
//int n = 100;//一百万
int[] Arr = new int[n];
Random rand = new Random();
for (int i = 0; i < n; i++)
{
Arr[i] = rand.Next(100);
}

int MaxDigit = 0;//最高位
for (int i = 0; i < Arr.Length; i++)
{
//O(n)时间找出最高位
int digit = (Arr[i] == 0) ? 0 : 1 + (int)(Math.Log(Arr[i]) / Math.Log(2));
if (MaxDigit < digit) { MaxDigit = digit; }
}
//int Max_Seriate_1 = 0;//找出最大连续的1,并且有相应数字的0
//Console.WriteLine("MaxDigit=" + MaxDigit);
int mask = 0;
int k = 1;
for (k = 1; k <= MaxDigit; k++)
{
mask = ((1 << k) - 1) << (MaxDigit - k);//产生前K个1的蒙板
//Console.WriteLine("mask=" + Convert.ToString(mask, 2));
bool HasFound = false;
bool Has_K_1_Head = false;
bool Has_K_0_Head = false;
for (int i = 1; i < Arr.Length; i++)
{
if ((Arr[i] & mask) == mask)
{
Has_K_1_Head = true;
}
if ((Arr[i] & mask) == 0)
{
Has_K_0_Head = true;
}
if (Has_K_1_Head && Has_K_0_Head)
{
HasFound = true;
break;
}
}
if (!HasFound)
{
break;
}
}
//去掉前K位
k++;
Console.WriteLine("最小=" + (((1 << k) - 1) << (MaxDigit - k)));
k++;
Console.WriteLine("最大=" + (((1 << k) - 1) << (MaxDigit - k)));
//Console.WriteLine("k=" + k);



List<int> XOR = new List<int>();
for (int i = 0; i < Arr.Length; i++)
{
for (int j = 0; j < Arr.Length; j++)
{
XOR.Add(Arr[i] ^ Arr[j]);
}
}
XOR.Sort();
Console.WriteLine("XOR=" + XOR[XOR.Count - 1]);
Console.Read();

}
}
}
超级大笨狼 2010-05-14
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
int n = 10;//一百万,测试时请减少这里
int[] Arr = new int[n];
Random rand = new Random();
for (int i = 0; i < n; i++)
{
Arr[i] = rand.Next(3, 100);//全部整数内,测试时请减少这里
Console.Write(Arr[i] + ",");
}
Console.WriteLine("输入完毕");
int MaxDigit = 0;//最高位
for (int i = 0; i < Arr.Length; i++)
{
//O(n)时间找出最高位
int digit = (Arr[i] == 0) ? 0 : 1 + (int)(Math.Log(Arr[i]) / Math.Log(2));
if (MaxDigit < digit) { MaxDigit = digit; }
}
//int Max_Seriate_1 = 0;//找出最大连续的1,并且有相应数字的0
int mask = 0;
int k = 1;
string maxXOR = "";
string boy = "";
//最外层循环是32次内,里层循环会提前中断,所以复杂度远远小于32*O(n),还是O(n)级别的。
for (k = 1; k <= MaxDigit; k++)
{
mask = ((1 << k) - 1) << (MaxDigit - k);//产生前K个1的蒙板
int HasFound = 0;

for (int i = 1; i < Arr.Length; i++)
{
if ((Arr[i] & mask) == mask)
{
HasFound |= 1;
}
if ((Arr[i] & mask) == 0)
{
HasFound |= 2;
}
if (HasFound == 3)
{
break;
}
}
if (HasFound == 3)
{
maxXOR += "1";
boy += "1";
}
else
{
maxXOR += "0";
boy += (HasFound == 1) ? "1" : "0";
}
}

int Boy = Convert.ToInt32(boy, 2);
int MaxXOR = Convert.ToInt32(maxXOR, 2);
Console.WriteLine("最大XOR=" + MaxXOR);
Console.WriteLine("其中一个是=" + Boy);
Console.WriteLine("另外一个是=" + (MaxXOR ^ Boy));


//以下是用暴力循环在O(n^2)级别的测试准确度对比部分
//请减少输入规模和离散程度,一般n=100就可以
//因为暴力循环肯定可以得到结果,所以暴力循环的结果是正确的。
//如果两个结果一致,那么算法正确。

List<int> XOR = new List<int>();
for (int i = 0; i < Arr.Length; i++)
{
for (int j = 0; j < Arr.Length; j++)
{
XOR.Add(Arr[i] ^ Arr[j]);
}
}
XOR.Sort();
Console.WriteLine("验证maxXOR=" + XOR[XOR.Count - 1]);

Console.Read();

}
}
}
yangjun2438607 2010-05-08
  • 打赏
  • 举报
回复
有意思啊!
超级大笨狼 2010-04-26
  • 打赏
  • 举报
回复
<button onclick="testHash()">测试Hash</button>
<button onclick="testMe()">测试遍历</button>
<SCRIPT LANGUAGE="JavaScript">
var h=new Hashtable();
var max=10000*20;
for(var i=0;i<max;i++)
{
h.add(i,i);
}
alert("可以测试了");

function time2stamp(){var d=new Date();return Date.parse(d)+d.getMilliseconds();}


function testMe()
{
var t1=time2stamp();
//var a=max * Math.random( );
var a=10000*15;
var re=false;
for(var i=0;i<max;i++)
{
if(i==a){re=true ;
break;
}
}
alert( "结果"+re +"耗费时间"+(time2stamp()-t1));
}
function testHash()
{
var t1=time2stamp();
//var a=max * Math.random( );
var a=10000*15;
var re=h.contains(a);

alert( "结果"+re +"耗费时间"+(time2stamp()-t1));
}

function Hashtable()
{
this._hash = {};
this._count = 0;
this.add = function(key, value)
{
if (this._hash.hasOwnProperty(key)) return false;
else { this._hash[key] = value; this._count++; return true; }
}
this.remove = function(key) { delete this._hash[key]; this._count--; }
this.count = function() { return this._count; }
this.items = function(key) { if (this.contains(key)) return this._hash[key]; }
this.contains = function(key) { return this._hash.hasOwnProperty(key); }
this.clear = function() { this._hash = {}; this._count = 0; }
}


</SCRIPT>
企-鹅 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 danievswide 的回复:]
呵呵,留着以后用……
[/Quote].
a124819202 2010-04-26
  • 打赏
  • 举报
回复
接分升星星
danieVSwide 2010-04-25
  • 打赏
  • 举报
回复
呵呵,留着以后用……
超级大笨狼 2010-04-25
  • 打赏
  • 举报
回复
function Hashtable()
{
this._hash = {};
this._count = 0;
this.add = function(key, value)
{
if (this._hash.hasOwnProperty(key)) return false;
else { this._hash[key] = value; this._count++; return true; }
}
this.remove = function(key) { delete this._hash[key]; this._count--; }
this.count = function() { return this._count; }
this.items = function(key) { if (this.contains(key)) return this._hash[key]; }
this.contains = function(key) { return this._hash.hasOwnProperty(key); }
this.clear = function() { this._hash = {}; this._count = 0; }
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gisfarmer/archive/2009/03/13/3986255.aspx
用户 昵称 2010-04-20
  • 打赏
  • 举报
回复
学习,太牛了!
nosuchtracter 2010-04-14
  • 打赏
  • 举报
回复
怎么感觉蛮复杂的啊?
遗传学算法什么时候能搞个简单的案例?上次那个太复杂了。
你今天没去参加什么VS2010发布大会?
潘哥,MSN很久么上了,有问题请教你啊
ruanchao 2010-04-14
  • 打赏
  • 举报
回复
有趣,关注 大笨狼
超级大笨狼 2010-04-13
  • 打赏
  • 举报
回复
B、平方速算



  一、求11~19 的平方
[规律]底数的个位与底数相加,得数为前积,底数的个位乘以个位相乘,得数为后积,满十前一。
 例:17 × 17
  17 + 7 = 24-
  7 × 7 = 49
  ---------------
  289
  参阅乘法速算中的“十位是1 的两位相乘”
 
二、个位是1 的两位数的平方
[规律]底数的十位乘以十位(即十位的平方),得为前积,底数的十位加十位(即十位乘以2),得数为后积,在个位加1。
例:71 × 71
  7 × 7 = 49--
  7 × 2 = 14-
  1
  -----------------
  5041 


参阅乘法速算中的“个位数是1的两位数相乘”。

三、个位是5 的两位数的平方
[规律]十位加1 乘以十位,在得数的后面接上25。
例:35 × 35
  (3 + 1)× 3 = 12--
  25
  ----------------------
  1225
  

四、21~50 的两位数的平方
[规律]在这个范围内有四个数字是个关键,在求25~50之间的两数的平方时,若把它们记住了,就可以很省事了。它们是:
21 × 21 = 441
22 × 22 = 484
23 × 23 = 529
24 × 24 = 576
求25~50 的两位数的平方,用底数减去25,得数为前积,50减去底数所得的差的平方作为后积,满百进1,没有十位补0。
例:37 × 37
37 - 25 = 12--
50 - 37)^2 = 169
 ----------------------
1369
  注意:底数减去25后,要记住在得数的后面留两个位置给十位和个位。
例:26 × 26
  26 - 25 = 1--
  (50-26)^2 = 576
  -------------------
  676

超级大笨狼 2010-04-13
  • 打赏
  • 举报
回复
补充7。一个印度老外教的,一百多的平方
口诀:1保留,尾乘2,尾平方
例:106的平方
解:
1 =1
6x2=12
6x6=36
106x106=11236

补充8。一个印度老外教的,90多的平方
口诀:百差几,减几,几平方
例:94的平方
解:
100-94 =6
94-6=88
6x6=36
94x94=8836

2,408

社区成员

发帖
与我相关
我的任务
社区描述
高性能计算
社区管理员
  • 高性能计算社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧