蹲著還是站著(數論)

2021-09-16 20:50:34 字數 903 閱讀 6131

楊主席這段時間由於要找實習,所以非常焦躁。因為公司的面試都非常的難,楊主席不知道從哪入手。於是他就找了他的學長坑坑詢問情況,坑坑告訴他要注重演算法的學習,於是就給楊主席出了乙個題目看看他算法學的怎麼樣,這道題是這樣的:有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<}

}