最新评论
没有调用this报错不是ms无聊没事儿去做的判断。
而是Cs语法上定义的,使用结构构造函数的时候,必须把所有字段赋值。
这样设计有一定的原因,虽然我也觉得这样的设计有些扯淡。。。
Re:数据库小工具整合版 混在深圳 2012-01-08 19:32
@银河
谢谢,已经收到
Re:数据库小工具整合版 银河 2012-01-07 18:32
@混在深圳
已经发给你了。请查收。
Re:数据库小工具整合版 混在深圳 2012-01-07 16:01
兄弟能发份给我吗 你提供的下载无法下载,谢谢了 hubinsmile@126.com
Re:个人住房贷款计算器的数学原理 载搭 2012-01-01 22:07
这也看不懂啊
[url=http://www.ab126.com]懒人计算器[/url]
Re:数据库小工具整合版 银河 2011-12-27 15:02
============== MySql for openSuSE ====================
server=test.skyiv.com;user=test;password=pwd-for-test
SELECT version(),user(),now()
server:
$ sudo zypper install mysql-community-server
$ sudo /sbin/chkconfig --add mysql
$ sudo /etc/init.d/mysql start
$ sudo /usr/bin/mysql_secure_installation
$ mysql -u root -p****
mysql> CREATE DATABASE test;
mysql> GRANT ALL PRIVILEGES ON test.* TO test@"%" IDENTIFIED BY "pwd-for-test";
mysql> exit
client:
$ mysql -h test.skyiv.com -u test -ppwd-for-test
mysql> select version(),user(),now();
+------------+-------------+---------------------+
| version() | user() | now() |
+------------+-------------+---------------------+
| 5.5.16-log | test@m4000t | 2011-12-27 14:59:53 |
+------------+-------------+---------------------+
1 row in set (0.00 sec)
mysql> exit
$
Re:数据库小工具整合版 银河 2011-12-27 10:44
============== PostgreSQL ===============
server=test.skyiv.com;user=test;password=pwd-for-test
SELECT version(),current_date
ben@vbox:~> sudo /sbin/chkconfig -a postgresql
ben@vbox:~> sudo /etc/init.d/postgresql start
ben@vbox:~> /etc/init.d/postgresql status
ben@vbox:~> su
vbox:/home/ben # su - postgres
postgres@vbox:~> psql
postgres=# create user test password 'pwd-for-test';
postgres=# create database test owner test;
postgres=# \q
postgres@vbox:~> vim data/postgresql.conf
--- modify ----> listen_addresses = '*'
postgres@vbox:~> vim data/pg_hba.conf
--- add -------> local all test password
--- add -------> host all test 0.0.0.0/0 password
postgres@vbox:~> exit
# exit
ben@vbox:~> sudo /etc/init.d/postgresql restart
ben@vbox:~> psql -U test
test=> select version();
test=> \q
ben@vbox:~>
$ sudo /usr/sbin/visudo
add to last line:
%sudo ALL=NOPASSWD: ALL
$ sudo /usr/sbin/groupadd sudo
$ sudo /usr/sbin/usermod -A sudo `whoami`
http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
在 openSUSE 中开机启动 mysql 服务可使用以下命令:
$ sudo chkconfig --add mysql
$ sudo /etc/init.d/mysql start
使 mysql 更安全:
$ sudo /usr/bin/mysql_secure_installation
[code=html]
$ mv id_rsa.pub ~/.ssh/authorized_keys
PuTTY:
Window
Translation
Received data assumed to be in which character set:
UTF-8
Connection
Data
Auto-login username: ben
SSH
Auth
Private key file for authentication:
D:\Bin\PuTTY\id_rsa.ppk
[/code]
Re:数据库小工具整合版 银河 2011-12-16 20:12
[code=html]
Windows: c:\Windows\Microsoft.NET\Framework\v4.0.30319\CONFIG\machine.config
openSUSE: /etc/mono/4.0/machine.config
<configuration>
<system.data>
<DbProviderFactories>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.77.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
<add name="PostgreSQL Data Provider" invariant="Npgsql" description=".Net Framework Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.11.92, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
</DbProviderFactories>
</system.data>
</configuration>
[/code]
Re:Timus 1567. SMS-spam CSDN大笨狼 2011-12-13 16:10
银河,你实力不错,我很欣赏.算法还有神马的,是多数.NETer缺乏的,我现在就缺你这样的人.有空练习我,QQ:745422972
Re:【算法】验证哥德巴赫猜想 银河 2011-12-04 21:57
[url=http://acm.timus.ru/problem.aspx?space=1&num=1356]1356. Something Easier[/url] 这道题目的引文也相当有意思。对物理学家如何定义素数的调侃很有趣。
Re:【算法】将正整数表示为平方数之和 键盘农夫 2011-12-04 19:43
[quote]银河:
@键盘农夫
根据你的随笔,我在正文最后增加了一小节:使用递归求解。[/quote]
不胜荣幸!
Re:【算法】将正整数表示为平方数之和 银河 2011-12-04 15:15
@键盘农夫
根据你的随笔,我在正文最后增加了一小节:使用递归求解。
Re:【算法】将正整数表示为平方数之和 键盘农夫 2011-12-04 09:35
@银河
http://www.cnblogs.com/KBTiller/archive/2011/12/04/2275232.html
Re:【算法】将正整数表示为平方数之和 银河 2011-12-03 11:57
我认为 C 语言标准库中的数学函数,如 sqrt、exp、log、sin 等,时间复杂应该是 O(1)。因为我认为计算这些数学函数的值的时间和双精度浮点数的指数大小无关,只和双精度浮点数的尾数的精度有关。而双精度浮点数的尾数是 53 个二进位,是个常数。所以时间复杂度应该是 O(1)。也就是说,计算
sqrt(1.0)
sqrt(2.225074E-308)
sqrt(1.797693E+308)
等等的值所需的时间是差不多的,即:计算 sqrt(x) 所需的时间和 x 的值的大小无关,而是和 x 的精度有关。
不知道我的看法是否正确,请各位大侠指正。谢谢!
Re:【算法】将正整数表示为平方数之和 银河 2011-12-03 10:48
另外,还必须更正一下,33 楼的 sqrtInt 函数的时间复杂度应该是 O(n ^ 1/2),而不是 O(n)。
Re:【算法】将正整数表示为平方数之和 银河 2011-12-03 10:46
[quote]garbageMan:
[quote]double sqrt(double x)
的话,时间复杂度是 O(1)。[/quote]
这种想法太天真了
别忘了sqrt()本身也有时间复杂度[/quote]
我知道 sqrt 本身也有时间复杂度,但是在我的印象中,C 标准库中的数学函数,如 sqrt、exp、log、sin 等,时间复杂应该是 O(1)。这里可能是我错了。有那位大侠知道目前使用的 C 标准库中的这些数学函数的时间复杂是多少,请在评论中告诉我。谢谢!
Re:【算法】将正整数表示为平方数之和 银河 2011-12-03 10:37
[quote]键盘农夫:这个题目根本不必也根本不应该用到浮点类型数据[/quote]
这个题目完全可以使用浮点类型数据。
因为直接使用 C 标准库中的 dobule sqrt(double) 函数非常优雅和高效。如若不然,就要使用类似 33 楼的评论中的 sqrtInt 函数了,这不够优雅,也不高效。
Re:【算法】将正整数表示为平方数之和 银河 2011-12-03 10:32
@garbageMan
[quote]从你这段言论看
你对数值计算几乎一无所知
并且你混淆了一个概念
把DBL_EPSILON这个浮点数本身的性质当作了数值计算最大误差[/quote]
你说我“对数值计算几乎一无所知”也是不正确的,还是请参阅我在2008年7月写的以下两篇随笔:
[url=http://www.cnblogs.com/skyivben/archive/2008/07/25/1250891.html]BigArithmetic - 提供任意精度的算术运算的静态类[/url]
[url=http://www.cnblogs.com/skyivben/archive/2008/07/25/1251697.html]再谈 BigInteger - 使用快速傅里叶变换[/url]
而且正是你不知道或者误解了 DBL_EPSILON,没有正确地认识到 double 数据类型必须在 DBL_EPSILON 规定的范围内保证其精确度。而这正是数值计算的基础。否则也无从利用快速傅里叶变换来实现大整数的运算了。正如我在“[url=http://www.cnblogs.com/skyivben/archive/2008/07/23/1248413.html]使用快速傅里叶变换计算大整数乘法[/url]”中提到的:
由于快速傅里叶变换是采用了浮点运算,因此我们需要足够的精度,以使在出现舍入误差时,结果中每个组成部分的准确整数值仍是可辨认的。长度为 N 的 B 进制数可产生大到 B^2 * N 阶的卷积分量。我们知道,双精度浮点数的尾数是 53 个二进位,所以:
2 x log2 B + log2 N + 几个 x log2 log2 N < 53
上式中左边最后一项是为了快速傅里叶变换的舍入误差。
所以,为了能够计算尽量大的整数,一般 B 不会取得太大。在计算机程序中经常使用 256 进制进行运算。但是如果经常需要将计算结果和十进制互相转换,则往往使用 100 进制进行运算。
Re:【算法】将正整数表示为平方数之和 银河 2011-12-03 10:21
@garbageMan
[quote]我有理由相信
你自己从来没计算过平方根
并且你也不知道应该怎样设计一个计算平方根的函数[/quote]
你的理由是不成立的。请参阅我在2008年7月写的以下两篇随笔:
[url=http://www.cnblogs.com/skyivben/archive/2008/07/25/1250891.html]BigArithmetic - 提供任意精度的算术运算的静态类[/url]
[url=http://www.cnblogs.com/skyivben/archive/2008/07/25/1251697.html]再谈 BigInteger - 使用快速傅里叶变换[/url]
在前一篇随笔里,使用牛顿迭代法实现了 BigArithmetic.Sqrt 方法。
在后一篇随笔里,利用 BigArithmetic.Sqrt 方法实现了 BigInteger.Sqrt 方法。
Re:【算法】将正整数表示为平方数之和 银河 2011-12-02 19:25
可以使用以下命令:
$ cpp -dM /dev/null
查看 gcc 预定义的宏
Re:【算法】将正整数表示为平方数之和 键盘农夫 2011-11-29 12:06
这个题目根本不必也根本不应该用到浮点类型数据
Re:【算法】将正整数表示为平方数之和 garbageMan 2011-11-28 19:37
@银河
[quote]银河:
@garbageMan
[quote]我的看法基于double数据类型的本质和定义[/quote]
的确, double 数据类型本质上是不精确的,所以需要 DBL_EPSILON 和 DBL_DIG 来规范 dobule 数据类型的精确度。也就是说,在 DBL_EPSILON 精度范围内 double 数据类型必须是精确的,超过这个范围才是不精确的。
而你是仅仅看到了 double 数据类型不精确的本质,而没有看到 double 数据类型必须在一定精度范围内精确。不然,double 数据类型还有什么用处?
按照你的说法,极端地说,反正 double 数据类型是不精确的,sqrt(2....[/quote]
从你这段言论看
你对数值计算几乎一无所知
并且你混淆了一个概念
把DBL_EPSILON这个浮点数本身的性质当作了数值计算最大误差
我有理由相信
你自己从来没计算过平方根
并且你也不知道应该怎样设计一个计算平方根的函数
Re:【算法】将正整数表示为平方数之和 garbageMan 2011-11-28 19:33
[quote]double sqrt(double x)
的话,时间复杂度是 O(1)。[/quote]
这种想法太天真了
别忘了sqrt()本身也有时间复杂度
Re:【算法】将正整数表示为平方数之和 银河 2011-11-28 09:57
@garbageMan
[quote]我的看法基于double数据类型的本质和定义[/quote]
的确, double 数据类型本质上是不精确的,所以需要 DBL_EPSILON 和 DBL_DIG 来规范 dobule 数据类型的精确度。也就是说,在 DBL_EPSILON 精度范围内 double 数据类型必须是精确的,超过这个范围才是不精确的。
而你是仅仅看到了 double 数据类型不精确的本质,而没有看到 double 数据类型必须在一定精度范围内精确。不然,double 数据类型还有什么用处?
按照你的说法,极端地说,反正 double 数据类型是不精确的,sqrt(2.0) 返回 1.04787 之类的值也是正常的。如果是这样,我们程序员还如何来写程序?
Re:【算法】将正整数表示为平方数之和 银河 2011-11-28 09:35
@yuk.lin
[quote]因为编译器的精度辩论的那么多楼,没必要吧。[/quote]
也不是我想辩论这么多楼,而是 garbageMan 园友说我的程序中使用 sqrt 函数来求整数的平方根是错误的,而我要他举一个反例,他最终也没有给出一个反例。
[quote]如若不然,请你举出一个反例,随便什么 C/C++ 编译器,随便什么不太大的整数,使用 sqrt 函数出现了误差,只要一个反例就足够反驳我的论点了。[/quote]
Re:【算法】将正整数表示为平方数之和 银河 2011-11-28 09:30
@陳胡図
[quote]我插个题外话,是有白色的乌鸦的。[/quote]
长见识了。谢谢!
Re:【算法】将正整数表示为平方数之和 银河 2011-11-28 09:24
@yuk.lin
[quote]就整数问题而言我们可以不考虑浮点数精度吧[/quote]
整数问题还真的要考虑浮点数的精度。
就求整数的平方根问题而言,如果只使用整数运算的话,应该是象下面这样的:
[code=cpp]
int sqrtInt(int n)
{
int i = 0;
while (i * i <= n) i++;
return i - 1;
}
[/code]
这个算法的时间复杂度是 O(n)。而使用 C 语言标准库函数
double sqrt(double x)
的话,时间复杂度是 O(1)。
此外,大整数的乘法如果使用普通的算法来计算的话,时间复杂度是 O(N^2),而使用快速傅里叶变换的话,时间复杂度是 O(N logN)。而快速傅里叶变换要用到复数,在计算机中也就要用到浮点数,也必须考虑浮点数的精度。具体的计算可参考我在2008年7月写的以下两篇随笔:
[url=http://www.cnblogs.com/skyivben/archive/2008/07/25/1250891.html]BigArithmetic - 提供任意精度的算术运算的静态类[/url]
[url=http://www.cnblogs.com/skyivben/archive/2008/07/25/1251697.html]再谈 BigInteger - 使用快速傅里叶变换[/url]
类似的例子还有很多,比如,[url=http://en.wikipedia.org/wiki/Fermat%27s_Last_Theorem]费马大定理[/url]谈论的是整数问题,但是要证明它就需要涉及到代数几何中的椭圆曲线和模形式等高深的内容。
Re:【算法】将正整数表示为平方数之和 陳胡図 2011-11-28 08:58
[quote]银河:
@garbageMan
@银河
固然不能看见一只羊是白的,就说全世界的羊都是白的。但是看见一只乌鸦是黑的,也不能说全世界的乌鸦就都是黑的。实际上全世界的乌鸦还就都是黑的。[/quote]
我插个题外话,是有白色的乌鸦的。
Re:【算法】将正整数表示为平方数之和 yuk.lin 2011-11-27 23:17
因为编译器的精度辩论的那么多楼,没必要吧。
就整数问题而言我们可以不考虑浮点数精度吧
Re:【算法】将正整数表示为平方数之和 garbageMan 2011-11-27 20:51
[quote]银河:
@garbageMan
[quote]你彻底误解了DBL_EPSILON 的含义[/quote]
你才彻底误解了 DBL_EPSILON 的含义。[/quote]
哦
好吧
你赢了
Re:【算法】将正整数表示为平方数之和 银河 2011-11-27 20:44
@garbageMan
[quote]你彻底误解了DBL_EPSILON 的含义[/quote]
你才彻底误解了 DBL_EPSILON 的含义。
Re:【算法】将正整数表示为平方数之和 银河 2011-11-27 20:43
@garbageMan
[quote]int i = 2.0 - DBL_EPSILON/2;
2.0 - DBL_EPSILON/2 在不在精度范围内
难道 i 会被赋值为2吗[/quote]
虽然你举的这个例子和我们讨论的问题没有关系,但是,i 还真的会被赋值为 2。不信你随便找个 C/C++ 编译器试试看。
Re:【算法】将正整数表示为平方数之和 garbageMan 2011-11-27 20:38
[quote]银河:
@garbageMan
[quote]以及没有编译器保证sqrt不会出现误差的事实[/quote]
任何合格的 C/C++ 编译器都必须保证 sqrt 在 DBL_EPSILON 的精度范围内不会出现误差,不然谁敢用这个编译器?[/quote]
武断
压根没有的事情
你彻底误解了DBL_EPSILON 的含义
Re:【算法】将正整数表示为平方数之和 garbageMan 2011-11-27 20:36
@银河
[quote]银河:
@garbageMan
[quote]DBL_EPSILON的存在本身就是说明可能会有误差[/quote]
不错,但是 DBL_EPSILON 的本意就是为了控制误差。在 DBL_EPSILON 精度允许范围内可以说没有误差,否则 DBL_EPSILON 这个量就没有存在的意义了。[/quote]
逻辑有问题是不能当程序员的
int i = 2.0 - DBL_EPSILON/2;
2.0 - DBL_EPSILON/2 在不在精度范围内
难道 i 会被赋值为2吗
Re:【算法】将正整数表示为平方数之和 garbageMan 2011-11-27 20:34
[quote]银河:
@garbageMan
[quote]在我看来这不说明什么
很多Online Judge都很垃圾[/quote]
另外,不要随便说别人很垃圾,特别是著名的网站、公司等等很垃圾。首先要检讨自己是不是很垃圾。[/quote]
只有垃圾才需要不断检讨自己是不是很垃圾
我说他们垃圾是因为他们就是垃圾
Re:【算法】将正整数表示为平方数之和 银河 2011-11-27 20:27
@garbageMan
[quote]以及没有编译器保证sqrt不会出现误差的事实[/quote]
任何合格的 C/C++ 编译器都必须保证 sqrt 在 DBL_EPSILON 的精度范围内不会出现误差,不然谁敢用这个编译器?
Re:【算法】将正整数表示为平方数之和 银河 2011-11-27 20:23
[quote]yuk.lin:这是人家证明过的定理然后用C语言实现吧[/quote]
是的,这是根据《数论导引(第5版)》中证明过的定理,使用 C 语言实现相应的算法。
Re:【算法】将正整数表示为平方数之和 银河 2011-11-27 20:22
@garbageMan
[quote]在我看来这不说明什么
很多Online Judge都很垃圾[/quote]
另外,不要随便说别人很垃圾,特别是著名的网站、公司等等很垃圾。首先要检讨自己是不是很垃圾。
Re:【算法】将正整数表示为平方数之和 银河 2011-11-27 20:20
@garbageMan
[quote]DBL_EPSILON的存在本身就是说明可能会有误差[/quote]
不错,但是 DBL_EPSILON 的本意就是为了控制误差。在 DBL_EPSILON 精度允许范围内可以说没有误差,否则 DBL_EPSILON 这个量就没有存在的意义了。
Re:【算法】将正整数表示为平方数之和 好坏 2011-11-27 20:19
@garbageMan
你的思维太混乱了,我觉得楼主已经解释的很清楚的了,你没有必要为了反驳而反驳了
Re:【算法】将正整数表示为平方数之和 yuk.lin 2011-11-27 20:15
这是人家证明过的定理然后用C语言实现吧
Re:【算法】将正整数表示为平方数之和 garbageMan 2011-11-27 20:11
[quote]银河:
@garbageMan
我说的是:“只要 DBL_EPSILON 的精度足够,对于不太大的整数来说,sqrt 就不会有误差”
[/quote]
这个逻辑不通
DBL_EPSILON的存在本身就是说明可能会有误差
根本无法用来说明“不会有误差”
[quote]银河:
而 1073.c 在 Timus Online Judge 网站上 Accepted 对我的论点也是一个支持,虽然也还不能证明我的论点。
[/quote]
在我看来这不说明什么
很多Online Judge都很垃圾
[quote]银河:
如若不然,请你举出一个反例,随便什么 C/C++ 编译器,随便什么不太大的整数,使用 sqrt 函数出现了误差,只要一个反例就足够反驳我的论点了。[/quote]
请你注意我在9楼的看法“没有任何根据能使得我们认定sqrt(16.0)的值是正好为4.还是比这个值稍微大一点或小一点 ”
从逻辑上来说我根本不需要举例
我的看法基于double数据类型的本质和定义
以及没有编译器保证sqrt不会出现误差的事实
Re:【算法】将正整数表示为平方数之和 银河 2011-11-27 19:52
@garbageMan
我说的是:“只要 DBL_EPSILON 的精度足够,对于不太大的整数来说,sqrt 就不会有误差”,也就是说,在 DBL_EPSILON 的精度范围内,没有误差。超出 DBL_EPSILON 精度范围,还是有误差的。
固然不能看见一只羊是白的,就说全世界的羊都是白的。但是看见一只乌鸦是黑的,也不能说全世界的乌鸦就都是黑的。实际上全世界的乌鸦还就都是黑的。
testSqrt 程序固然不能证明我的论点,而是只能提供一些支持我的论点的论据。而 1073.c 在 Timus Online Judge 网站上 Accepted 对我的论点也是一个支持,虽然也还不能证明我的论点。
但是 DBL_EPSILON 和 DBL_DIG 这些量就可以证明我的论点,它们本来的意义就是用于我的论点的。
如若不然,请你举出一个反例,随便什么 C/C++ 编译器,随便什么不太大的整数,使用 sqrt 函数出现了误差,只要一个反例就足够反驳我的论点了。
Re:【算法】将正整数表示为平方数之和 garbageMan 2011-11-27 18:51
@银河
你的测试只说明了,对于你的编译器以及你测试的这个数据没有误差
总不能看见一只羊是白的就说全世界的羊都是白的吧
Re:【算法】将正整数表示为平方数之和 garbageMan 2011-11-27 18:49
[quote]只要 DBL_EPSILON 的精度足够,对于不太大的整数来说,sqrt 就不会有误差[/quote]
这有因果关系吗?
[quote]直接截断就行了。[/quote]
既然截断,怎么会没有误差呢?