Diff
checker
テキスト
テキスト
画像
ドキュメント
Excel
フォルダ
Legal
Enterprise
デスクトップ
料金
ログイン
Diffchecker デスクトップのダウンロード
テキスト比較
2 つのテキスト ファイルの違いを見つける
ツール
履歴
ライブエディター
未変更行を折りたたむ
折り返しなし
レイアウト
分割
統合
比較精度
スマート
単語
文字
シンタックスハイライト
構文を選択
無視
テキスト変換
最初の差分へ移動
入力を編集
Diffchecker Desktop
Diffcheckerを実行する最も安全な方法。Diffchecker Desktopアプリを入手:あなたの差分はコンピューターから出ることはありません!
Desktopを入手
builtin_popcount doubt
作成日
6 年前
差分は期限切れになりません
クリア
エクスポート
共有
説明
5 削除
行
合計
削除
文字
合計
削除
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
68 行
すべてコピー
12 追加
行
合計
追加
文字
合計
追加
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
75 行
すべてコピー
#include<bits/stdc++.h>
#include<bits/stdc++.h>
#define int long long
#define int long long
#define vi vector<int>
#define vi vector<int>
#define vvi vector<vector<int>>
#define vvi vector<vector<int>>
using namespace std;
using namespace std;
int mod = 1e9+7;
int mod = 1e9+7;
vvi m;
vvi m;
int n,k;
int n,k;
void multiply(vvi &a, vvi b){
void multiply(vvi &a, vvi b){
vvi c(n,vi(n));
vvi c(n,vi(n));
for(int i = 0 ; i < n; ++i){
for(int i = 0 ; i < n; ++i){
for(int j = 0; j < n; ++j){
for(int j = 0; j < n; ++j){
c[i][j] = 0;
c[i][j] = 0;
for(int K = 0; K < n; ++K){
for(int K = 0; K < n; ++K){
c[i][j] += a[i][K] * b[K][j] % mod;
c[i][j] += a[i][K] * b[K][j] % mod;
if(c[i][j] >= mod)c[i][j]-=mod;
if(c[i][j] >= mod)c[i][j]-=mod;
}
}
}
}
}
}
for(int i = 0 ; i < n; ++i){
for(int i = 0 ; i < n; ++i){
for(int j = 0; j < n; ++j){
for(int j = 0; j < n; ++j){
a[i][j] = c[i][j];
a[i][j] = c[i][j];
}
}
}
}
}
}
void power(vvi &a, int n){
void power(vvi &a, int n){
if(n < 2)return;
if(n < 2)return;
power(a,n/2);
power(a,n/2);
multiply(a,a);
multiply(a,a);
if(n&1)multiply(a,m);
if(n&1)multiply(a,m);
}
}
void solve(){
void solve(){
cin >> n >> k;
cin >> n >> k;
m = vvi (n,vi(n));
m = vvi (n,vi(n));
vvi res(n,vi(n));
vvi res(n,vi(n));
vi arr(n);
vi arr(n);
for(auto &i: arr)cin >> i;
for(auto &i: arr)cin >> i;
if(k == 1)return void(cout << n);
if(k == 1)return void(cout << n);
for(int i = 0 ; i < n; ++i){
for(int i = 0 ; i < n; ++i){
for(int j = 0; j < n; ++j){
for(int j = 0; j < n; ++j){
コピー
コピー済み
コピー
コピー済み
if(__builtin_popcount(
arr[i]
^
arr[j]
) % 3 == 0)
m[i][j] =
1,
res[i][j] =
1
;
int val =
arr[i]
^
arr[j]
;
int cnt = 0;
while(val){
cnt+=(val&1);
val/=2;
}
m[i][j] =
(cnt % 3 == 0);
res[i][j] =
(cnt % 3 == 0)
;
}
}
}
}
power(res,k-1);
power(res,k-1);
int ans = 0;
int ans = 0;
for(int i = 0 ; i < n; ++i){
for(int i = 0 ; i < n; ++i){
for(int j = 0; j < n; ++j){
for(int j = 0; j < n; ++j){
ans+=res[i][j];
ans+=res[i][j];
if(ans >= mod)ans-=mod;
if(ans >= mod)ans-=mod;
}
}
}
}
cout << ans;
cout << ans;
}
}
signed main(){
signed main(){
ios::sync_with_stdio(false);
ios::sync_with_stdio(false);
cin.tie(0);
cin.tie(0);
cout.tie(0);
cout.tie(0);
int t = 1;
int t = 1;
// cin >> t;
// cin >> t;
while(t--)solve();
while(t--)solve();
return 0;
return 0;
}
}
保存された差分
原文
ファイルを開く
#include<bits/stdc++.h> #define int long long #define vi vector<int> #define vvi vector<vector<int>> using namespace std; int mod = 1e9+7; vvi m; int n,k; void multiply(vvi &a, vvi b){ vvi c(n,vi(n)); for(int i = 0 ; i < n; ++i){ for(int j = 0; j < n; ++j){ c[i][j] = 0; for(int K = 0; K < n; ++K){ c[i][j] += a[i][K] * b[K][j] % mod; if(c[i][j] >= mod)c[i][j]-=mod; } } } for(int i = 0 ; i < n; ++i){ for(int j = 0; j < n; ++j){ a[i][j] = c[i][j]; } } } void power(vvi &a, int n){ if(n < 2)return; power(a,n/2); multiply(a,a); if(n&1)multiply(a,m); } void solve(){ cin >> n >> k; m = vvi (n,vi(n)); vvi res(n,vi(n)); vi arr(n); for(auto &i: arr)cin >> i; if(k == 1)return void(cout << n); for(int i = 0 ; i < n; ++i){ for(int j = 0; j < n; ++j){ if(__builtin_popcount(arr[i]^arr[j]) % 3 == 0)m[i][j] = 1,res[i][j] = 1; } } power(res,k-1); int ans = 0; for(int i = 0 ; i < n; ++i){ for(int j = 0; j < n; ++j){ ans+=res[i][j]; if(ans >= mod)ans-=mod; } } cout << ans; } signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t = 1; // cin >> t; while(t--)solve(); return 0; }
変更されたテキスト
ファイルを開く
#include<bits/stdc++.h> #define int long long #define vi vector<int> #define vvi vector<vector<int>> using namespace std; int mod = 1e9+7; vvi m; int n,k; void multiply(vvi &a, vvi b){ vvi c(n,vi(n)); for(int i = 0 ; i < n; ++i){ for(int j = 0; j < n; ++j){ c[i][j] = 0; for(int K = 0; K < n; ++K){ c[i][j] += a[i][K] * b[K][j] % mod; if(c[i][j] >= mod)c[i][j]-=mod; } } } for(int i = 0 ; i < n; ++i){ for(int j = 0; j < n; ++j){ a[i][j] = c[i][j]; } } } void power(vvi &a, int n){ if(n < 2)return; power(a,n/2); multiply(a,a); if(n&1)multiply(a,m); } void solve(){ cin >> n >> k; m = vvi (n,vi(n)); vvi res(n,vi(n)); vi arr(n); for(auto &i: arr)cin >> i; if(k == 1)return void(cout << n); for(int i = 0 ; i < n; ++i){ for(int j = 0; j < n; ++j){ int val = arr[i] ^ arr[j]; int cnt = 0; while(val){ cnt+=(val&1); val/=2; } m[i][j] = (cnt % 3 == 0); res[i][j] = (cnt % 3 == 0); } } power(res,k-1); int ans = 0; for(int i = 0 ; i < n; ++i){ for(int j = 0; j < n; ++j){ ans+=res[i][j]; if(ans >= mod)ans-=mod; } } cout << ans; } signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t = 1; // cin >> t; while(t--)solve(); return 0; }
違いを見つける