楊主席這段時間由於要找實習,所以非常焦躁。因為公司的面試都非常的難,楊主席不知道從哪入手。於是他就找了他的學長坑坑詢問情況,坑坑告訴他要注重演算法的學習,於是就給楊主席出了乙個題目看看他算法學的怎麼樣,這道題是這樣的:有n個人排成一排,從1到n按順序依次編號,現在要執行n次操作,第一次操作讓所有的人都蹲下,之後第二次操作讓編號是2和2的倍數的人全部站起來,然後第三次操作讓編號是3和3的倍數的人全部做相反的動作(站著的人蹲下,蹲下的人站起來),以此類推...,最後第n此操作讓編號為n的這個人也做相反的動作。請問n次操作後,從第a個人到第b個人之間(包括a和b這兩個數字,且a示例1
複製
1複製5 1 3
2方法一:帶點技巧的暴力模擬(可能資料比較水)
#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const int n=1e6+5;
int book[n];
int main()
}int ans=0;
for(int i=a; i<=b; i++)
printf("%d\n",ans);
}return 0;
}
方法二:
乙個正整數n是完全平方數的充分必要條件是n有奇數個因數(包括1和n本身)
即只有完全平方數是蹲著的
#include#includeusing namespace std;
int main()
}cout<}
}