213 条题解
-
0lallallla LV 6 @ 2015-11-07 10:58:29
测试数据 #0: Accepted, time = 0 ms, mem = 512 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 516 KiB, score = 10
测试数据 #2: Accepted, time = 15 ms, mem = 516 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 516 KiB, score = 10
测试数据 #4: Accepted, time = 46 ms, mem = 516 KiB, score = 10
测试数据 #5: Accepted, time = 15 ms, mem = 516 KiB, score = 10
测试数据 #6: Accepted, time = 0 ms, mem = 516 KiB, score = 10
测试数据 #7: Accepted, time = 15 ms, mem = 516 KiB, score = 10
测试数据 #8: Accepted, time = 31 ms, mem = 516 KiB, score = 10
测试数据 #9: Accepted, time = 46 ms, mem = 516 KiB, score = 10
Accepted, time = 168 ms, mem = 516 KiB, score = 100
代码
#include<iostream>
using namespace std;
int main()
{
int i,n,ans=0,x,y,m;
cin>>n>>m;
for(i=1;i<=n;i++)
{
x=i;//穷举每一个数
while(x>0)//拆开
{
y=x%10;//取个位
x=x/10;//砍个位
if(y==m)//判断
ans++;
}
}
cout<<ans<<endl;
return 0;
} -
02015-10-28 18:28:38@
记录信息
评测状态 Accepted
题目 P1848 记数问题
递交时间 2015-10-28 18:27:24
代码语言 Pascal
评测机 VijosEx
消耗时间 203 ms
消耗内存 776 KiB
评测时间 2015-10-28 18:27:26
评测结果
编译成功Free Pascal Compiler version 2.6.4 [2014/03/06] for i386
Copyright (c) 1993-2014 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling foo.pas
foo.pas(11,26) Warning: Variable "l" does not seem to be initialized
foo.pas(2,5) Note: Local variable "c" not used
foo.pas(2,17) Note: Local variable "j" not used
Linking foo.exe
15 lines compiled, 0.1 sec , 28016 bytes code, 1628 bytes data
1 warning(s) issued
2 note(s) issued
测试数据 #0: Accepted, time = 0 ms, mem = 772 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 772 KiB, score = 10
测试数据 #2: Accepted, time = 46 ms, mem = 772 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 776 KiB, score = 10
测试数据 #4: Accepted, time = 31 ms, mem = 772 KiB, score = 10
测试数据 #5: Accepted, time = 31 ms, mem = 772 KiB, score = 10
测试数据 #6: Accepted, time = 2 ms, mem = 772 KiB, score = 10
测试数据 #7: Accepted, time = 31 ms, mem = 772 KiB, score = 10
测试数据 #8: Accepted, time = 31 ms, mem = 772 KiB, score = 10
测试数据 #9: Accepted, time = 31 ms, mem = 772 KiB, score = 10
Accepted, time = 203 ms, mem = 776 KiB, score = 100
代码
var
a,b,c,x,y,z,i,l,j:longint;
begin
readln(a,b);
for i:=1 to a do
begin
z:=i;
repeat
x:=z mod 10 ;
y:=z div 10 ;
if x=b then inc(l);
z:=y;
until y=0;
end;
writeln(l);
end. -
02015-10-22 17:58:27@
#include<iostream>
using namespace std;
int main()
{
int n,x,y,p=0;
cin>>n>>x;
int q[20];
for(int a=0;a<n;a++)
{
q[a]=a+1;
while(q[a]>=10)
{
y=q[a]%10;
q[a]/=10;
if(y==x)
p++;
}
if(q[a]==x)
p++;
}
cout<<p;
} -
02015-08-05 19:40:01@
水一水,用sprintf即可。把数字打印到字符串里,然后for慢慢走。
贴代码
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int n,k,ans=0;
scanf("%d%d",&n,&k);
char st[510];
for(int i=1;i<=n;i++)
{
sprintf(st,"%d",i);
int a=strlen(st);
for(int j=0;j<=a;j++)
{
if(st[j]-'0'==k)
{
ans++;
}
}
}
printf("%d\n",ans);
return 0;
} -
02015-06-09 14:14:31@
这题目用最简单的穷举即可 当年的初赛题 各位请注意务必用longint。过去用的integer在复赛悲催了,切记切记。
program p1848;
var
num,i,x,temp,val,p:**longint**;
begin
read(num);
read(x);
for i:=1 to num do
begin
p:=i;
while p<> 0 do
begin
val:=p mod 10;
if val=x then temp:=temp+1;
p:=p div 10;
end;
end;
write(temp);
end. -
02015-05-05 18:40:54@
草稿
var
n,x,j,k,time:longint;
begin
readln(n,x);
for j:=1 to n do
repeat
k:=j mod 10;
if k=x then pred(time);
j:=j div 10;
until j<=0;
writeln(time);
end -
02015-02-09 09:56:55@
编译成功
测试数据 #0: Accepted, time = 0 ms, mem = 448 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 448 KiB, score = 10
测试数据 #2: Accepted, time = 31 ms, mem = 440 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 444 KiB, score = 10
测试数据 #4: Accepted, time = 46 ms, mem = 444 KiB, score = 10
测试数据 #5: Accepted, time = 31 ms, mem = 448 KiB, score = 10
测试数据 #6: Accepted, time = 0 ms, mem = 452 KiB, score = 10
测试数据 #7: Accepted, time = 31 ms, mem = 452 KiB, score = 10
测试数据 #8: Accepted, time = 46 ms, mem = 448 KiB, score = 10
测试数据 #9: Accepted, time = 31 ms, mem = 448 KiB, score = 10
Accepted, time = 216 ms, mem = 452 KiB, score = 100
代码
#include<stdio.h>
#include<string.h>
int main()
{
int i,n,tot=0,x,y,m;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
x=i;
while(x>0)
{
y=x%10;
x/=10;
if(y==m)
tot++;
}
}
printf("%d",tot);
return 0;
} -
02015-02-09 09:34:19@
#include<stdio.h>
#include<string.h>
int main()
{
int i,n,tot=0,x,y,m;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
x=i;
while(x>0)
{
y=x%10;
x/=10;
if(y==m)
tot++;
}
}
printf("%d",tot);
return 0;
} -
02015-02-06 15:09:35@
为什么用log10()和pow()函数不对呢?
非得叫我自己实现。
下面是一种递推的方法。速度奇快。
评测结果
编译成功测试数据 #0: Accepted, time = 0 ms, mem = 472 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 476 KiB, score = 10
测试数据 #2: Accepted, time = 0 ms, mem = 476 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 476 KiB, score = 10
测试数据 #4: Accepted, time = 0 ms, mem = 480 KiB, score = 10
测试数据 #5: Accepted, time = 0 ms, mem = 472 KiB, score = 10
测试数据 #6: Accepted, time = 0 ms, mem = 468 KiB, score = 10
测试数据 #7: Accepted, time = 0 ms, mem = 472 KiB, score = 10
测试数据 #8: Accepted, time = 15 ms, mem = 476 KiB, score = 10
测试数据 #9: Accepted, time = 0 ms, mem = 472 KiB, score = 10
Accepted, time = 15 ms, mem = 480 KiB, score = 100
代码
#include<iostream>
#include<string.h>
#include<math.h>
#include<stdio.h>
using namespace std;
int power(int n, int p){
int ans = 1;
while (p--)ans *= n;
return ans;
}
int lg(int n){
int ans = 0;
while (n){
ans++; n /= 10;
}
return ans-1;
}
long long int f(int n, int x, int wei){//第一位0
if (n == 0){
if (x == 0)
return wei + 1;
else return 0;
}
int di = power(10, wei);
int me = n / di;
int next = n%di;
if (me > x){
return di + me*f(di - 1, x, wei - 1) + f(next, x, wei - 1);
}
else if (me < x){
return me*f(di - 1, x, wei - 1) + f(next, x, wei - 1);
}
else {
return (next + 1) + me*f(di - 1, x, wei - 1) + f(next, x, wei - 1);
}
}
long long int ans(int n, int x){
if (n == 0)return 0;
int wei = lg(n);
int di = power(10, wei);
int me = n / di;
int next = n%di;
int ret;
if (x == 0){
ret = (me - 1)*f(di - 1, x, wei - 1) + f(next, x, wei - 1);
}
else if (me > x){
ret = di + (me - 1)*f(di - 1, x, wei - 1) + f(next, x, wei - 1);
}
else if (me < x){
ret = (me - 1)*f(di - 1, x, wei - 1) + f(next, x, wei - 1);
}
else {
ret = (next + 1) + (me - 1)*f(di - 1, x, wei - 1) + f(next, x, wei - 1);
}
return ret + ans(di - 1, x);
}
int test(int n, int x){
int i;
int ans = 0;
for (i = 1; i <= n; i++){
int j = i;
while (j){
if (j % 10 == x)ans++;
j /= 10;
}
}
return ans;
}
void play(){
int n, x;
for (x = 0; x < 10; x++)
for (n = 999990; n < 1000000; n++){
cout << ans(n, x) << endl<<test(n, x) << endl;
if (ans(n, x) != test(n, x)){
cout << n << endl;
return;
}
}
cout << "haha" << endl;
}
int main(){
int n, x=0;
cin >> n >> x;
cout << ans(n, x) << endl;
return 0;
} -
02015-02-06 14:23:56@
我原以为这么做会超时,可能是数据太少了。
#include<iostream>
using namespace std;
int main(){
int n, x;
cin >> n >> x;
int i;
int ans = 0;
for (i = 1; i <= n; i++){
int temp = i;
while (temp){
if (temp % 10 == x)ans++;
temp /= 10;
}
}
cout << ans << endl;
return 0;
} -
02015-01-24 20:04:16@
水题一次全过
var n,x,ans,i:longint;
function num(k:longint):integer;
var t:integer;
begin
num:=0;
repeat
t:=k mod 10;
if t=x then inc(num);
k:=k div 10;
until k=0;
end;
begin
readln(n,x);
for i:=1 to n do
inc(ans,num(i));
writeln(ans);
end. -
02014-11-06 10:53:50@
var
n,x,sum,ans,i:longint;
procedure try(p:longint);
begin
if p mod 10=x then
inc(sum);
if (p<>0)and(p div 10>0) then
try(p div 10);
end;
begin
readln(n,x);
for i:=1 to n do
begin
sum:=0;
try(i);
ans:=ans+sum;
end;
writeln(ans);
end.淳朴的搜索数据太弱>_<
-
02014-11-03 13:15:22@
program count;
var n,i,j,x:longint;
a:array[0..9] of longint;
begin
readln(n,x);
for i:=0 to 9 do a[i]:=0;
for i:=1 to n do
begin
j:=i;
while j<>0 do
begin
inc(a[j mod 10]);
j:=j div 10;
end;
end;
writeln(a[x]);
end. -
02014-10-31 16:59:54@
var
x:integer;
i,jc,n:longint;
c:array[1..1000000] of longint;
begin
readln(n,x);
jc:=0;
for i:=1 to n do c[i]:=i;
for i:=1 to n do if c[i]=x then inc(jc)
else while c[i]<>0 do
begin
if c[i] mod 10=x then inc(jc);
c[i]:=c[i] div 10;
end;
writeln(jc);
readln;
end. -
02014-10-24 18:57:33@
var i,n,s,x,t,m:longint;
begin
read(n); read(x);
for i:=1 to n do
begin
if i=x then t:=t+1 else
begin
s:=i;
while s<>0 do
begin
m:=s mod 10;
if m=x then inc(t);
s:=s div 10;
end;
end;
end;
write(t);
end. -
02014-10-07 14:48:29@
爆0约一周年纪念
-
02014-08-06 10:33:56@
P1784改一下就行了…………
-
02014-08-06 10:33:22@
1次就过了
-
02014-08-06 10:33:14@
noip最水题!!
记录信息
评测状态 Accepted
题目 P1848 记数问题
递交时间 2014-08-06 10:32:26
代码语言 C++
评测机 VijosEx
消耗时间 1135 ms
消耗内存 272 KiB
评测时间 2014-08-06 10:32:32
评测结果
编译成功测试数据 #0: Accepted, time = 0 ms, mem = 272 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 272 KiB, score = 10
测试数据 #2: Accepted, time = 202 ms, mem = 268 KiB, score = 10
测试数据 #3: Accepted, time = 15 ms, mem = 272 KiB, score = 10
测试数据 #4: Accepted, time = 234 ms, mem = 268 KiB, score = 10
测试数据 #5: Accepted, time = 124 ms, mem = 272 KiB, score = 10
测试数据 #6: Accepted, time = 0 ms, mem = 268 KiB, score = 10
测试数据 #7: Accepted, time = 124 ms, mem = 272 KiB, score = 10
测试数据 #8: Accepted, time = 218 ms, mem = 272 KiB, score = 10
测试数据 #9: Accepted, time = 218 ms, mem = 268 KiB, score = 10
Accepted, time = 1135 ms, mem = 272 KiB, score = 100 -
02014-08-06 10:33:03@
水题…………
记录信息
评测状态 Accepted
题目 P1848 记数问题
递交时间 2014-08-06 10:32:26
代码语言 C++
评测机 VijosEx
消耗时间 1135 ms
消耗内存 272 KiB
评测时间 2014-08-06 10:32:32
评测结果
编译成功测试数据 #0: Accepted, time = 0 ms, mem = 272 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 272 KiB, score = 10
测试数据 #2: Accepted, time = 202 ms, mem = 268 KiB, score = 10
测试数据 #3: Accepted, time = 15 ms, mem = 272 KiB, score = 10
测试数据 #4: Accepted, time = 234 ms, mem = 268 KiB, score = 10
测试数据 #5: Accepted, time = 124 ms, mem = 272 KiB, score = 10
测试数据 #6: Accepted, time = 0 ms, mem = 268 KiB, score = 10
测试数据 #7: Accepted, time = 124 ms, mem = 272 KiB, score = 10
测试数据 #8: Accepted, time = 218 ms, mem = 272 KiB, score = 10
测试数据 #9: Accepted, time = 218 ms, mem = 268 KiB, score = 10
Accepted, time = 1135 ms, mem = 272 KiB, score = 100
信息
- ID
- 1848
- 难度
- 5
- 分类
- (无)
- 标签
- 递交数
- 16580
- 已通过
- 5806
- 通过率
- 35%
- 被复制
- 36
- 上传者