1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 有道难题topcoder

有道难题topcoder

时间:2022-08-08 10:59:58

相关推荐

有道难题topcoder

今天做了有道topcoder的题目,也是第一次在topcoder做题,弄了半天才知道怎么回事,比赛已经结束,可以说一下题目了,开始准备在linux下用c++写,结果开始做题发现题目在linux下有乱码,就又换到windows下做,由于windows下没有很好的编译器,就打开eclipse用java开编,题目很简单,我基本过了样例就提了。

250分的题

[quote]

给定一个正整数n. 你可以修改n的十进制表示中任意一位而得到另一个十进制表示的数,你修改后得到的新数需要严格小于n (这个新数可以有一些前导0).请返回按照上述要求修改后得到的数中最大的一个。

[/quote]

public class ChangeDigit {

public int change(int n) {

int a = n;

int p = 1;

while (a % 10 == 0) {

a /= 10;

p *= 10;

}

return n - p;

}

}

500分的题:

[quote]

一个二进制序列由下面的伪代码生成:

String A = "0"

While (A的长度小于等于n)

创建一个和A一样长度的字符串B

For i=0,1,...length(A)-1

If (i 是完全平方数)

B[i] = 1-A[i]

Else

B[i] = A[i]

令A = A + B (即将B拼接在A后面)

End While

Return A

请注意,在上面的伪代码中,A[i]和B[i]分别表示字符串A和B中下标为i的字符(下标编号从0开始)。对“完全平方数”的定义是,对于整数i,存在整数j,使得i= j *j,则称i为完全平方数。

下面具体说明序列生成的过程:如果n=7,则在每一轮迭代中,A的取值依次为:0, 01, 0110, 01101010,所以最终产生的二进制序列就是0,1,1,0,1,0,1,0

请返回上述序列中下标为n的数字(该序列的下标从0开始)

[/quote]

public class BinarySequence {

public int getValue(int n) {

String sequence = getSequence(n);

return sequence.charAt(n) - '0';

}

private String getSequence(int n) {

StringBuffer a = new StringBuffer();

a.append('0');

while (a.length() <= n) {

StringBuffer b = new StringBuffer(a);

for (int i = 0; i < a.length(); i++) {

if (i - (int) Math.sqrt(i) * (int) Math.sqrt(i) < 10e-10) {

b.setCharAt(i, (char) (1 + '0' - a.charAt(i) + '0'));

}

}

a.append(b);

}

return a.toString();

}

}

这个题可以打表来提高效率,我只是简单的模拟做了一下。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
有道难题之OO

有道难题之OO

2020-02-24

有道难题又开始了

有道难题又开始了

2023-04-26

有道难题题解

有道难题题解

2022-05-07

有道难题-练习赛

有道难题-练习赛

2020-05-29