主题:求教一个简单的函数问题
menza109
[专家分:0] 发布于 2005-04-15 19:54:00
要求: 输入三个数a,b,c,分别为被除数,除数和余数.
输出在a和c的条件下b的数目.
谢谢各位!
回复列表 (共7个回复)
沙发
47 [专家分:590] 发布于 2005-04-16 19:09:00
loading ...
板凳
47 [专家分:590] 发布于 2005-04-16 19:17:00
var
a,c,i,result:integer;
begin
writeln(''input a'');
readln(a);
writeln(''input c'');
readln(c);
result:=0;
a:=a-c;
for i:=c to a do {从c开始循环,比c小的肯定没除干净}
if (a mod i=0)and(i<>c) then result:=result+1;
{这个判断很关键,a mod i 相信大家能看懂,后面的i<>c解释如下:
比如说 除18(a)余3(c)的数有几个? 显然是5和15这两个数.但是如果没有i<>c的话,
就会把3也算进去,因为此时(a=c),所以应该排除.}
writeln(''the answer is '',result);
end.
3 楼
47 [专家分:590] 发布于 2005-04-16 19:57:00
希望大家多提意见
侃侃更优的算法
代码的优化是无止尽的 (qq:390573927)
4 楼
menza109 [专家分:0] 发布于 2005-04-18 21:48:00
太谢谢你了!
两封帖子就你回得让我最满意!
真的很感激!
交个朋友好吗?
5 楼
47 [专家分:590] 发布于 2005-04-22 18:38:00
对了
这个程序可以优化
只要循环从c+1 开始
就不用加a<>c的判断了
6 楼
smallboat [专家分:60] 发布于 2005-04-24 10:30:00
同意同意
我的程序。
program aaa;
var a,c,i,s:integer;
begin
readln(a,c);
s:=0;
for i:=c+1 to a-c do
if (a mod i=c) then inc(s);
writeln(s);
end.
7 楼
faintzw [专家分:2660] 发布于 2005-04-24 13:04:00
当输入的a=c会出现什么情况呢?
显然ans->+∞ ……
我来回复