NC229550. 香辣牛肉面
描述
输入描述
第一行含有一个整数T()表示测试数据组数。
对于每组测试数据:
第1行含有一个整数F(),表示想要风味值为F的香辣牛肉面。
输出描述
每组测试数据输出一个数,表示添加调料的方案数。
示例1
输入:
5 2 3 4 5 114514
输出:
3 5 8 10 1351608
C(gcc 7.5.0) 解法, 执行用时: 644ms, 内存消耗: 300K, 提交时间: 2022-10-22 13:16:56
#include <stdio.h> int main() { int t; scanf("%d", &t); while (t--) { long long n, ans = 0; scanf("%lld", &n); for (long long i = 1,j; i <= n; i=j+1) { j = n / (n / i); ans += (n / i)*(j-i+1); } printf("%lld\n", ans); } return 0; }
C++(g++ 7.5.0) 解法, 执行用时: 107ms, 内存消耗: 300K, 提交时间: 2022-10-13 18:48:43
#include<iostream> #include<math.h> using namespace std; typedef long long ll; ll t; int main() { cin >> t; while (t--) { ll n ,ans = 0,k; cin >> n; k = ll(sqrt(n)); for (int i = 1; i <= k; i++) { ans+= n / i - i + 1; } ans = (ans - k) * 2 + k; cout << ans << endl; } }
C 解法, 执行用时: 99ms, 内存消耗: 304K, 提交时间: 2022-10-18 19:05:10
#include <stdio.h> int main() { int T, i; scanf("%d",&T); for ( i = 0; i < T; i++) { long long int F, V, S, C, sum = 0; scanf("%lld",&F); for(V = 1; V*V <= F; V++) { sum+=2*((F-V*V)/V+1)-1; } printf("%lld\n",sum); } }
C++ 解法, 执行用时: 108ms, 内存消耗: 380K, 提交时间: 2021-11-27 21:25:15
#include"stdio.h" #include"string.h" int main() { int t; scanf("%d",&t); while(t--) { long long n,i,ans=0; scanf("%lld",&n); for(i=1;i*i<=n;i++) ans=ans+2*(n/i-i)+1; printf("%lld\n",ans); } return 0; }