有一个集合M是这样生成的: (1) 已知 k 是集合 M 的元素; (2) 如果 y 是 M 的元素,那么, 2y+1 和 3y+1 都是 M 的元素; (3) 除了上述二种情况外,没有别的数能够成为 M 的一个元素。
问题:任意给定 k 和 x,请判断 x 是否是 M 的元素。这里的 k是无符号整数,x 不大于 100000, 如果是,则输出YES,否则,输出 NO
输入
输入整数 k 和 x, 逗号间隔。
输出
如果是,则输出 YES,否则,输出NO
样例输入
0,22
样例输出
YES
pascal+判断元素是否存在(请给标程)
答案:2 悬赏:80
解决时间 2021-03-05 07:48
- 提问者网友:优雅ぉ小姐
- 2021-03-04 22:19
最佳答案
- 二级知识专家网友:而你却相形见绌
- 2021-03-04 23:05
var a,b,i,n:longint; c:char;
f:array[0..300001]of boolean;
begin
read(c);
while c<>',' do
begin a:=a*10+ord(c)-ord('0'); read(c); end;
while not eoln do
begin read(c); b:=b*10+ord(c)-ord('0'); end;
f[a]:=true;
for i:=a to b do
if f[i] then
begin f[i*2+1]:=true; f[i*3+1]:=true; end;
if f[b] then writeln('YES') else writeln('NO');
end.
有问题可以问,我尝试解答
f:array[0..300001]of boolean;
begin
read(c);
while c<>',' do
begin a:=a*10+ord(c)-ord('0'); read(c); end;
while not eoln do
begin read(c); b:=b*10+ord(c)-ord('0'); end;
f[a]:=true;
for i:=a to b do
if f[i] then
begin f[i*2+1]:=true; f[i*3+1]:=true; end;
if f[b] then writeln('YES') else writeln('NO');
end.
有问题可以问,我尝试解答
全部回答
- 1楼网友:厌今念往
- 2021-03-04 23:24
function find(x:longint):longint;
begin
if f[x]<>x then f[x]:=find(f[x]);
find:=f[x];
end;
procedure tarjin(u:longint);
begin
f[u]:=u; color[u]:=1;
for i:=1 to n do
if (g[u,i])and(color[i]=0) then
begin
tarjin(i); f[i]:=u;
end;
for i:=1 to n do
if (g[u,i])and(color[i]=2) then
begin
lca[u,i]:=find(i); lca[i,u]:=lca[u,i];
end;
color[i]:=2;
end;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯