Tý muốn cắt một sợi dây có chiều dài NN (mét) thành 3 đoạn dây có chiêu dài mỗi đoạn là số nguyên dương (đơn vị mét) sao cho 3 đoạn dây này là 3 cạnh của một tam gịác cân có cạnh đáy lớn hơn cạnh bên. Lưu ý: Tam giác cân là

Tý muốn cắt một sợi dây có chiều dài NN (mét) thành 3 đoạn dây có chiêu dài mỗi đoạn là số nguyên dương (đơn vị mét) sao cho 3 đoạn dây này là 3 cạnh của một tam gịác cân có cạnh đáy lớn hơn cạnh bên. Lưu ý: Tam giác cân là tam giác có hai cạnh bằng nhau, hai cạnh bằng nhau gọi là hai cạnh bên, cạnh còn lại gọi là cạnh đáy. Yêu cầu: Em hãy giúp Tý tính có bao nhiêu cách cắt đoạn dây này. Dữ liệu Một số nguyên dương NN (N<1016N<1016) Kết quả Ghi ra số MM là số cách cắt sợi dây theo yêu cầu. Input Copy19 Output Copy2 Giải thích: Có 2 cách cắt sợi dây thành 3 đoạn thỏa mãn đề là: (5m;5m;9m5m;5m;9m) và (6m;6m;7m6m;6m;7m). Lưu ý:: Các cách cắt sợi dây thành 3 đoạn (xx mét; xx mét; yy mét) và các hoán vị của bộ 3 số . (x;x;yx;x;y) chì được tính là 1 cách cắt. Chẳng hạn: Cách cắt thành các đoạn (5m;5m;9m5m;5m;9m) và các hoán vị của nó là (5m;9m;5m5m;9m;5m) hoặc (9m;5m;5m9m;5m;5m) chỉ được tính là 1 cách cắt. Giới hạn Có 20% test ứng với N≤102N≤102; Có 30% test ứng với 102<N≤106102<N≤106; Có 30% test ứng với 106<N≤109106<N≤109; Có 20% test ứng với 109<N≤1016109<N≤1016. Dựa theo code này ko dùng for đơn giản dễ hiểu: #include <iostream> using namespace std; int main() {     long long N;     cin >> N;     int count = 0;     for (long long x = 1; 2 * x < N; ++x) {         long long y = N - 2 * x;         if (y > x and 2 * x > y) {             count++;         }     }     cout << count << endl;     return 0; }
Đăng phản hồi