diff --git a/src/2/15/T316693.cpp b/src/2/15/T316693.cpp new file mode 100644 index 0000000..7289a83 --- /dev/null +++ b/src/2/15/T316693.cpp @@ -0,0 +1,46 @@ +#include +#include + +using namespace std; +using ll = int64_t; + +ll cgcd(ll a, ll b){ + while(b){ + ll temp = a % b; + a = b; + b = temp; + } + return a; +} + +ll phi(ll n){ + if(n == 0) return 0; + ll res = n; + for(ll p=2; p*p <= n; p++){ + if(n % p == 0){ + while(n % p ==0){ + n /= p; + } + res -= res / p; + } + } + if(n > 1){ + res -= res / n; + } + return res; +} + +int main(){ + ios::sync_with_stdio(false); + cin.tie(0); + int T; + cin >> T; + while(T--){ + ll a, m; + cin >> a >> m; + ll d = cgcd(a, m); + ll mp = m / d; + ll ans = phi(mp); + cout << ans << "\n"; + } +} \ No newline at end of file diff --git a/src/2/15/T574007.cpp b/src/2/15/T574007.cpp new file mode 100644 index 0000000..8d69f3c --- /dev/null +++ b/src/2/15/T574007.cpp @@ -0,0 +1,96 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +using ll = int64_t; + + +constexpr ll maxn = 1e3; +constexpr ll maxa = 10000100; + +ll n, m; +ll arr[maxn + 5][maxn + 5]; +ll cm[maxn + 5][maxn + 5]; +ll cr[maxn + 5], ca[maxn + 5]; +ll ans = std::numeric_limits::max(); +ll np[maxa + 5]; + +std::bitset<10000105> bs; + +int main() { + std::ios::sync_with_stdio(false); + std::cin.tie(nullptr); + std::cout.tie(nullptr); + + bs.set(); + bs.reset(0); + bs.reset(1); + + for (ll i = 2; i * i <= maxa; ++i) { + if (bs[i]) { + for (ll j = i * i; j <= maxa; j += i) { + bs[j] = false; + } + } + } + + ll nnp = std::numeric_limits::max(); + for (ll i = maxa; i >= 0; --i) { + if (bs[i]) { + nnp = i; + } + np[i] = nnp; + } + + std::cin >> n >> m; + for (ll i = 0; i < n; i++) { + for (ll j = 0; j < m; j++) { + std::cin >> arr[i][j]; + + if (arr[i][j] > maxa) { + + arr[i][j] = maxa; + } + } + } + + for (ll i = 0; i < n; i++) { + for (ll j = 0; j < m; j++) { + cm[i][j] = np[arr[i][j]] - arr[i][j]; + } + } + + for (ll i = 0; i < n; i++) { + ll row_total = 0; + for (ll j = 0; j < m; j++) { + row_total += cm[i][j]; + } + cr[i] = row_total; + } + + for (ll j = 0; j < m; j++) { + ll ct = 0; + for (ll i = 0; i < n; i++) { + ct += cm[i][j]; + } + ca[j] = ct; + } + + for (ll i = 0; i < n; i++) { + for (ll j = 0; j < m; j++) { + + ll ccc = + cr[i] + ca[j] + (bs[arr[i][j]] ? 0 : -cm[i][j]); + if (ccc < ans) { + ans = ccc; + } + } + } + + std::cout << ans << '\n'; +} \ No newline at end of file