#include<bits/stdc++.h> usingnamespace std; #define int long long int n; int ans=0; signedmain(){ cin>>n; for(int a=1;a*a*a<=n;a++){ for(int b=a;a*b*b<=n;b++){ int c=n/(a*b); if(c<b) continue; ans+=c-b+1; } } cout<<ans; return0; }
#include<bits/stdc++.h> usingnamespace std; #define int long long signedmain(){ int x; cin>>x; int ans=x*10; int len=to_string(x).size(); for(int a=1;a<=9;a++){ for(int d=-9;d<=9;d++){ int sum=0; for(int i=0;i<len;i++){ int t=a+d*i; if(t<0||t>9) break; sum=sum*10+t; } if(sum>=x){ ans=min(ans,sum); } } } cout<<ans; return0; }
T3
题意
给定正整数 N 和 M,找到最小正整数 X,使得 X 可以表示为 a,b 两个整数的乘积且 $1\le a,b\le N$(a,b 可以相同)且 $M\le X$。
#include<bits/stdc++.h> usingnamespace std; #define int long long signedmain(){ int n,m; cin>>n>>m; int ans=-1; for(int a=1;a<=n;a++){ int b=(m+(a-1))/a; if(b<=n){ if(ans==-1||ans>a*b){ ans=a*b; } } if(a*a>=m){ break; } } cout<<ans; return0; }
中午
睡觉………………
下午
题目逐渐变得难了起来…
T4(随堂练习)
题意
有三种物品,是易拉罐,普通罐头和开罐器。易拉罐可以获得 x 点体力,普通罐头要消耗开罐器的一点耐久,获得 x 点体力,开罐器可以开罐 x 次。从 N 个中拿走 N 个,求最大可以获取的体力值。