i < N+1 和 i <= N 不同吗?
Are i < N+1 and i <= N different?
我以前就知道 i <= N
和 i < N+1
没有区别
但是,当我输入6 6
进行编程时。
如果 i <= N
则打印
1 6 6
6 1 1
2 3 3
3 2 2
否则
1 6 6
6 1 1
2 3 3
3 2 2
3 2 2
2 3 3
我不明白为什么它会有所作为
#include <iostream>
#include <cmath>
using namespace std;
typedef long long LNT;
LNT gcd(LNT a, LNT b)
{
if( b == 0)
return a;
return gcd(b, a%b);
}
int main()
{
LNT red, green;
LNT GCD;
cin >> red >> green;
GCD = gcd(red, green);
//for(LNT i = 1; i<sqrtl(GCD)+1; i++)
for(LNT i = 1; i<=sqrtl(GCD); i++) // <- This Line cause the difference
{
if( GCD % i == 0)
{
cout << i << " " << red/i << " " << green/i <<endl;
if( i != GCD/i )
{
LNT k = GCD/i;
cout << k << " " << red/k << " " << green/k <<endl;
}
}
}
}
sqrtl
return long double
在这种情况下你的假设是:
no difference between i <= N
and i < N+1
错了。
这仅适用于整数值。作为 sqrtl
returns long double
,如果它是小数,那么对于小数,如果你将原始与小数进行比较,并且 +1
另一个整数适合,它仍然会有所不同:
! 2 <= 1.5
2 < 1.5+1
好吧,i<=n
和 i < n+1
之间没有区别,因为它们都只运行到 n
但你做的是 sqrt
而 returns long double 并且它们不一定相同。
我以前就知道 i <= N
和 i < N+1
没有区别
但是,当我输入6 6
进行编程时。
如果 i <= N
则打印
1 6 6
6 1 1
2 3 3
3 2 2
否则
1 6 6
6 1 1
2 3 3
3 2 2
3 2 2
2 3 3
我不明白为什么它会有所作为
#include <iostream>
#include <cmath>
using namespace std;
typedef long long LNT;
LNT gcd(LNT a, LNT b)
{
if( b == 0)
return a;
return gcd(b, a%b);
}
int main()
{
LNT red, green;
LNT GCD;
cin >> red >> green;
GCD = gcd(red, green);
//for(LNT i = 1; i<sqrtl(GCD)+1; i++)
for(LNT i = 1; i<=sqrtl(GCD); i++) // <- This Line cause the difference
{
if( GCD % i == 0)
{
cout << i << " " << red/i << " " << green/i <<endl;
if( i != GCD/i )
{
LNT k = GCD/i;
cout << k << " " << red/k << " " << green/k <<endl;
}
}
}
}
sqrtl
return long double
在这种情况下你的假设是:
no difference between
i <= N
andi < N+1
错了。
这仅适用于整数值。作为 sqrtl
returns long double
,如果它是小数,那么对于小数,如果你将原始与小数进行比较,并且 +1
另一个整数适合,它仍然会有所不同:
! 2 <= 1.5
2 < 1.5+1
好吧,i<=n
和 i < n+1
之间没有区别,因为它们都只运行到 n
但你做的是 sqrt
而 returns long double 并且它们不一定相同。