126 条题解
-
0math2357 LV 5 @ 16 年前
hint说最优是n^5?
数学方法明明是O(lgN)
/*1181*/
#include "stdio.h"
#include "string.h"
int n;
int num[9]={0,9+1,189+1,2889+1,38889+1,488889+1,5888889+1,68888889+1,788888889+1},
n10[9]={0,0,10,100,1000,10000,100000,1000000,10000000};
void ipd()
{
scanf("%d",&n);
}
void go()
{
int i=1,d,e,f;
char ans[50];
while(n>=num[i])i++;
d=n-num;/*多几位,0起*/
e=d/i;/*第几个,0起*/
f=d%i;/*哪一位,0起*/
e=n10[i]+e;
sprintf(ans,"%d",e);
printf("%c",ans[f]);
}
int main()
{
ipd();
go();
return 0;
} -
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
注意:把整数定义为qword,因为数据大于10^8,这也是我WA了一次的原因! -
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
成功秒杀!Maths Problem...WS... -
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 72ms
├ 测试数据 05:运行超时...最后一个点有多大?
-
016 年前@
数学方法,先确定位数,再确定当前位的第几个数,再确定数字中的第几位
-
016 年前@
program zhangji;
var
s:ansistring;s1:string;
i,j,k,m:integer;
si,n,l:qword;
begin
read(n);
si:=0;
repeat
inc(si);
str(si,s1);
s:=s+s1;
l:=length(s);
until l>n;
writeln(s[n]);
end.
用字符串好象不行 有两个超了 晕 -
016 年前@
wo 汗
-
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms弱弱的水题,用数学方法做一次AC
-
016 年前@
用数学方法超简单
-
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
016 年前@
哇卡,多么美妙的一次AC。
思路是确定第n位在那个数里,再找他是这个数的第几位。
longint足够了。
呵呵别想复杂了,我初一时做这道题是想办法模拟,结果比想象中的复杂多了。
今天再做,10分钟20行就搞定了,我真的是进步了 -
016 年前@
楼下O(1),好一个O(1),我看到3个循环
-
017 年前@
出题人什么思路?O(n^5)的字符串处理?P.S.这个死题啊我……
-
017 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms最开始手动表打错了,卡了N久……
-
017 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
实践证明 本题很弱 -
017 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msO(1)!
-
017 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms我晕死!~~~~~~ 注意数据范围到了10的9次方了............. 不知我说得对不对
-
017 年前@
用字符串处理超时一个点,改用数字处理就过了。
-
017 年前@
#include
int main(void)
{
long num[10]={0};
long i,j,k;
long n;scanf("%d",&n);
k=1;
for (i=1;i