2号wa,玄学80分求助
查看原帖
2号wa,玄学80分求助
890321
mooktian楼主2023/8/11 07:12

下面是AC代码

#include <bits/stdc++.h>
#define f(i,a,b) for(int i=a;i<=b;i++)
#define g(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
int n,k; 
int a[11];
int main(){
	cin >> n >> k;
	int x =pow(10,n)-1;
	int y =pow(10,n-1);
	f(i,y,x) {
		a[i%k]++;
	}
	f(i,0,k-1) cout << a[i] << " ";
    return 0;
}

不过我不想这样写,我想这个可以用数学方法计算的啊,但是就是死活过不了,调了几个小时了,感觉也没啥问题啊,就是2号点wa,也没有数据可以下载,不知道怎么改,求大神指点。

#include <bits/stdc++.h>
#define f(i,a,b) for(int i=a;i<=b;i++)
#define g(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
int n,k,x = 1,y = 1;
int a[15];	 
int main(){
	cin >> n >> k;
	f(i,1,n) {
		x = x*((1 << 3) +(1 << 1));
	}
	y = x/10;
	x--;
	//cout << x <<" "<<y;
	if((x-y+1)%k == 0) {
		f(i,0,k-1) a[i] =(x-y+1)/k;
	}else {
		int sh,yu;
		yu = y%k,sh = y/k;
		if(y%k !=0) {
			f(i,y%k,k-1) a[i]++;
			y =(y/k+1)*k;
		}
		yu = x%k,sh = x/k;
		if(x%k !=0) {
			f(i,1,x%k) a[i]++;
			x =(x/k)*k;
		}
		sh = (y-x)/k;
		f(i,0,k-1) a[i] += sh;
		a[0]++;
	}
	f(i,0,k-1) cout << a[i] << " "; 
    return 0;
}
2023/8/11 07:12
加载中...