随便记记一些精彩的小东西

C++判断一个数是不是整数

法一:

if(t!=(int)t) cout<<"NO\n";
else cout<<"YES\n";

利用数据类型强制转换来判断

错误摘记

!(b==n&&a==n)  ≠  (b!=n&&a!=n)

判断一个数是不是2的幂次方

利用 \(n \& (n - 1)\) 来判断,式子为 0 即说明原数为 2 的幂次方
比如说 \(16_{10} = 10000_2,15_{10} = 1111_2,16 \& 15 = 0\)

ll n;
cin >> n;
if((n & (n - 1)) == 0) cout << "YES\n";
else cout << "NO\n";

如何证明 1²+2²+…+n² 为平方数的解只有 n=1 或 n=24?

知乎传送门

得到排序的排名

void solve(){
	int n = 7;
	int a[] = {3, 7, 1, 4, 5, 2, 6};
	vector<int> id(n);
	iota(id.begin(), id.end(), 0);
	for(int i = 0; i < n; ++ i){
		cout << id[i] << " \n"[i == n - 1];
	}
	sort(id.begin(), id.end() ,[&](int i, int j){
		return a[i] > a[j];
	});
	// id数组表示第 i 名在 id[i] 的位置
	for(int i = 0; i < n; ++ i){
		cout << a[i] << " \n"[i == n - 1];
	}
	for(int i = 0; i < n; ++ i){
		cout << id[i] << " \n"[i == n - 1];
	}
	return ;
}
posted on 2023-02-24 20:27  Qiansui  阅读(15)  评论(0编辑  收藏  举报