input
output
59
1799
37
721
60
1859
后面是两组稍微大一点点超过数据范围的
100
5099
600
45299
#include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> using namespace std; int board[60]; int ctest[60][60]; int wutong(int x) { double m=sqrt(x); if (int(m)==m) {return 1;} else {return 0;} } int main() { int n; cin>>n; memset(board,0,sizeof(board)); int all=1; int ans=2;board[1]=1; ctest[1][0]=1; ctest[1][1]=1; for (int i=1;i<=60;i++) ctest[i][0]=0; while (all<=n) { int flag=0; for (int t=1;t<=all;t++) if (wutong(board[t]+ans)==1) {flag=1;board[t]=ans; ctest[t][0]++; ctest[t][ctest[t][0]]=ans; break;cout<<"stone:"<<t<<";ball:"<<ans<<endl;} if ((flag==0)&&(all<n)) {all++;board[all]=ans;flag=1;ctest[all][0]++; ctest[all][ctest[all][0]]=ans;} if (flag==0) break; ans++; } cout<<ans-1<<endl; cout<<'1'<<' '; for (int i=1;i<=n;i++) {for (int j=1;j<=ctest[i][0]-1;j++) cout<<ctest[i][j]<<' ';cout<<ctest[i][ctest[i][0]]<<' ';cout<<endl;system("pause");} return 0; }
这个是我的打出路径的代码,暂时是错的用来暂存,我一定会弄出对的来!!!!!
noip忘记取模的痛