杭电2015

来源:百度知道 编辑:UC知道 时间:2024/06/18 07:24:49
不知道哪里有问题,第三个for循环不管怎样就是不执行..#include<iostream>
using namespace std;
void main()
{
int m,n,i,j,a,b;
while(cin>>m>>n)
{
for(j=1,a=0,b=0;j<=m/n;j++)
{
for(i=1;i<=n;i++)
{
a+=2;
b+=a;

}
cout<<b/n<<ends;
}
if(m%n!=0)
for(i=1;i<=(m-n*j)+1;i++)
{
a+=2;
b+=a;
cout<<b/(m-n*j)<<endl;
}
}
}
我只想知道我哪里错,其他答案都不要发了~真确答案我自己弄的到。

个人认为你程序编的太乱了所以才发的正确代码,算了,当我没说。
楼下改的不对,b清零就错了
for(i=1;i<=(m-n*j)+1;i++) 这句
j上面最后又加了一次,肯定超了,减1试试

算法很有问题,都帮你改了

#include<iostream>
using namespace std;
void main()
{
int m,n,i,j,a,b;
while(cin>>m>>n)
{
for(j=1,a=0,b=0;j<=m/n;j++)
{
for(i=1;i<=n;i++)
{
a+=2;
b+=a;

}
cout<<b/n<< ends; //输出怎么能在循环里?
b = 0; //每组数据处理完后,总和要归零,不然下组数据总和会和上组数据总和加在一起
}
if(m%n!=0)
{
b = 0; //同样的问题
for(i=1;i<=(m-n*(j-1));i++)
{
a+=2;
b+=a;
}
cout<<b/(m-n*(j-1))<<endl; //这里,纯粹数学问题
}
}
}

第一个
for(j=1,a=0,b=0;j<=m/n;j++)
退出的时候一定是j=[m/n]+1
那么你第三个for的时候
for(i=1;i<=(m-n*j)+1;i++)
(m-n*j)+1 = (m-n*([m/n]+1))+1 < (m - n*(m/n) )+1 = 1
也就是说i<=(m-n*j)<1