蒟蒻求助!小学奥数的方法只有20分
查看原帖
蒟蒻求助!小学奥数的方法只有20分
569235
w9095楼主2022/8/2 14:47
#include <bits/stdc++.h>
using namespace std;
long long a,b;
long long ans[10],ans2[10]; 
long long k; 
//代码有点丑,凑合着看看吧

int main()
{
	long long i,m,n=1;
	scanf("%lld%lld",&a,&b);
	for(i=1;i<b;i*=10)
	    for(long long j=0;j<10;j++)
	        {
	        	k=(j+1)*i-1;
	        	if(k>b)break;
	        	m=b-k;
	        	ans[(j+1)%10]+=(m/(i*10))*i;
	        	if(m%(i*10)!=0)
	        	   if(m%(i*10)>i)ans[(j+1)%10]+=i;
	        	   else ans[(j+1)%10]+=m%(i*10);
			}
	if(b%10==0)ans[1]++;
	if(a!=1)
	   {
	   	b=a-1;
	   	for(i=1;i<b;i*=10)
		    for(long long j=0;j<10;j++)
		        {
		        	k=(j+1)*i-1;
		        	if(k>b)break;
		        	m=b-k;
		        	ans2[(j+1)%10]+=(m/(i*10))*i;
		        	if(m%(i*10)!=0)
		        	   if(m%(i*10)>i)ans2[(j+1)%10]+=i;
		        	   else ans2[(j+1)%10]+=m%(i*10);
				}
	if(b%10==0)ans2[1]++;
	if(a==2)ans2[1]++;
	   }
	for(int k=0;k<10;k++)
	    printf("%d ",ans[k]-ans2[k]);
	return 0;
}

按照小学奥数“页码问题”来的,

每10个数中有1个个位含这个数,

每100个数中有10十位个位含这个数,

每1000个数中有100百位个位含这个数,

以此类推—— 结果只有二十分。 (主要还是0的输出怪怪的)

如果dalao们能提供一些hack数据也行

不喜轻喷,违禁紫衫

2022/8/2 14:47
加载中...