#include <stdio.h>
#include <stdlib.h>
#define N 100000
int anw[N][3]={0},a[N][N]={0};
int main()//an=2n-1,sn=n(1+2n-1)/2=n2n/2=n*n
{
int x;
int t,s=0,num=2;//a[i][j],i-hang,j-lie
//int anw[N][3]={0},a[N][N]={0};
scanf("%d",&t);
a[1][1]=1;
for (int i=0;i<t;++i)
{
scanf("%d",&x);
for (int n=1;n!=0;++n)
{
if (n*n>=x&&(n-1)*(n-1)<x)
{
s=n;
break;
}
}
for (int j=2;j<=s;++j)//a[k][j]**
{
for (num;num<=j*j;)
{
if(num<=(j*j+(j-1)*(j-1)+1)/2)
{
for (int k=1;k<=j;++k)
{
a[k][j]=num;
++num;
}
}
else
{
for (int k=j-1;k>=1;--k)
{
a[j][k]=num;
++num;
}
}
}
}
for (int i1=1;i1<=s;++i1)
{
for (int j=1;j<=s;++j)
{
if (a[i1][j]==x)
{
anw[i][0]=1;
anw[i][1]=i1;
anw[i][2]=j;
}
}
}
}
for (int i=0;i<t;++i)
{
if(anw[i][0]==1)
{
printf("%d %d\n",anw[i][1],anw[i][2]);
}
}
return 0;
}
这是一道题目的程序,题目要求:
输入:
#1
1
11
#2
1
1000000000
输出:
#1
2 4
#2
31623 14130
但是输入#2数据后之后什么都没输出。请问该怎么解决?
请给出具体题目,谢谢
第一,你这代码会运行很久……
其次,请看这一段与这一段
for (int i1=1;i1<=s;++i1)
{
for (int j=1;j<=s;++j)
{
if (a[i1][j]==x)
{
anw[i][0]=1;
anw[i][1]=i1;
anw[i][2]=j;
}
}
}
and
for (int i=0;i<t;++i)
{
if(anw[i][0]==1)
{
printf("%d %d\n",anw[i][1],anw[i][2]);
}
你a数组的第一个下标都不一样(也许是题目要求,但是我认为有误)
请看我的电脑C++提示太大了
请把你的代码填入 ‘代码块’
题目是啥呀,看代码估计是这里卡住了