蓝桥杯2015初赛 - 加法变乘法 - 暴力
PS
今天上午,光是这题我就花了好久去写。
知道思路是怎么样的,但是代码一直写不对。
这周六就比赛了,到时候千万不要把简单的问题想复杂了,也千万不要一直死扣一道题目,别让一道题影响其他的做题时间。
思路
直接暴力枚举就行。答案是16。
错误代码
这是没有写对的代码:(然后自己也一直没有改出来)
// int flag=0,k=1;
// for (int i = 1; i<=46 ; i++)
// {
// int sum =i * (i + 1); //16 sum=290
// for (int j = i+2; j <=48; j++)
// {
// sum = sum + j * (j + 1); // j*(j+1)1725
//// for(int kk=j+2; kk<=49; kk++)
//// sum+=kk;
// for(int kk=1; kk<=49; kk++)
// {
// if(kk==i||kk==(i+1)||kk==j||kk==(j+1)) continue;
// sum+=kk;
// }
// if (sum ==2015&&i!=10)
// {
// flag = 1,k=i;
// break;
// }
// sum = i * (i + 1)+(i+2);
// }
// if (flag) break;
// }
// cout << k << endl;
AC代码
#include<iostream>
#include<cmath>
#include<string.h>
#include<algorithm>
#include<queue>
#include<map>
using namespace std;
#define inf 0x3f3f3f3f
int main()
{
int sum = 0;
for (int i = 1; i < 49; i++)
{
for (int j = i + 1; j <= 49; j++)
{
int sum = 0;
for (int k = 1; k <= 49; k++)
{
if (k == i || k == j) continue;
else if (k == i + 1 || k == j + 1)
sum = sum + k * (k - 1);
else
sum = sum + k;
}
if (sum == 2015 && i != 10)
cout << i << endl;
}
}
return 0;
}