1.5 连续整数和问题
★实验任务
大部分的正整数可以表示为2 个以上(包含2个)连续正整数之和。例如,6 = 1 + 2 + 3 ,9 = 5 + 4= 2 + 3 + 4 。
现在要求计算给定的正整数表示为若干个连续正整数之和的方案个数。
★数据输入
输入数据只有一行,一个正整数 N(1<=N<=1000)。
★数据输出
输出相应的连续整数分解方案的个数。
输入示例
9
输出示例
2
1.
暴力解法
#include<iostream>
using namespace std;
int main()
{
int n,j;
int cnt = 0;
cin >> n;
int sum = 0;
for (int i = 1; i < n; i++)
{
for ( j = i, sum = 0; sum < n; j++)
{
sum += j;
}
if (sum == n) cnt++;
}
cout << cnt;
}
2.
借鉴网上的方法
#include<iostream>
using namespace std;
int main()
{
int a[1001];
int n;
cin >> n;
a[0] = 0;
int cnt = 0;
for (int i = 1; i <= 1000; i++)
{
a[i] = a[i - 1] + i;
}
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (a[j] - a[i] == n) cnt++;
}
}
cout << cnt;
}
1.9 我想静静Ⅳ
★实验任务
上回说到,你奔走于各个世界线拯救静静。现在,完成任务的你决定玩个简单的游戏静一静。我们知道,数字在计算机里是用二进制存储的,现在你想知道如果把一个数字的二进制倒过来是多少。
比如 int a = 5,用二进制表示就是00000000000000000000000000000101。把它倒过来就是 10100000000000000000000000000000,对应的十进制就是 2684354560。
★数据输入
输入第一行为一个数 N,代表一共有 N 个数要处理。0 < N < 10^5
接下去有N 个无符号32 位整数,即 unsigned int
★数据输出
对于每个数,输出二进制逆序后对应的十进制的值是多少。注意输出数也是 unsigned int 的。
输入示例
5
0
1
2
3
4
输出示例
0
2147483648
1073741824
3221225472
536870912
include
include
using namespace std;
int main()
{
unsigned int n, num ,j=0;
cin >> n;
unsigned int sum = 0;
while (j++<n)
{
unsigned int a[32] = { 0 };
sum = 0;
cin >> num;
for (int i = 0; i < 32; i++)
{
if (num == 0) break;
a[i] = num % 2;
num /= 2;
}
for (int i = 0; i < 32; i++)
{
if(a[i]!=0)
sum += pow(2, 31 - i);
}
cout << sum << endl;
}
}