⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1937229_wa.c

📁 北大大牛代码 1240道题的原代码 超级权威
💻 C
字号:
# include <stdio.h>
# include <math.h>


static long a[] = {45,9000,1386450,188019000};
static long b[] = {1,11,192,2893,38894,488895};
static long c[] = {9,180,2700,36000,450000,5400000,63000000};
int main()
{
	int i, t;
	long  n, bn, m, mm;
	double tmp, s;

	scanf("%d",&t);
	while(t--)
	{
		scanf("%lf",&tmp);
		for(i = 0; i < 4; i++)
		{
			if(tmp <= a[i])
				break;
			else
				tmp -= a[i];
		}
		/*s = b[i]-(i+1)/2;
		s *= s;
		s += 2*(i+1)*tmp;
		s = sqrt(s);
		s += (i+1)/2 - b[i];
		s /= (i+1);*/
		s = 2*tmp/(i+1);
		s += (b[i]/(i+1)-0.5)*(b[i]/(i+1)-0.5);
		s = sqrt(s);
		s += 0.5 - b[i]/(i+1);
		n = (long)floor(s);
		bn = b[i] + (n-1)*(i+1);
		s = (b[i]+bn)*n/2;
		while(1)
		{
			if(s >= tmp)
				break;
			else
			{
				n++;
				bn+=i+1;
				s+=bn;
			}
		}
		tmp -= (b[i]+bn-i-1)*(n-1)/2;
		for(i = 0; i < 6; i++)
		{
			if(tmp > c[i])
				tmp -= c[i];
			else
				break;
		}		
		m = (long)tmp/(i+1);
		if((long)tmp%(i+1)==0) m--;
		mm = (long)pow(10,i);
		mm += m;
		m = (long)tmp%(i+1);
		while(m--)
			mm/=10;
		printf("%ld\n",mm%10);
	}
	return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -