A - Not
题意:
输入0/1,之后取反。
思路:(非)
非一下即可。
AC
#include <iostream>
using namespace std;
int main()
{
int x;
cin>>x;//x=!x;
cout<<(!x)<<endl;
return 0;
}
B - Product Max
题意:
给你两个取值范围。各取一个数,要求乘积最大。
思路(枚举):
枚举所有情况即可。最后去一个max。(本题由于区间的正负性,所以不能简单的就取右端点)
AC
#include <iostream>
using namespace std;
typedef long long ll;
int main()
{
ll a[3],b[3];
cin>>a[1]>>a[2];
cin>>b[1]>>b[2];
ll ans=-8e18;
for(int i=1; i<=2; i++){
for(int j=1; j<=2; j++){
ans=max(ans,a[i]*b[j]);
}
}
cout<<ans<<endl;
return 0;
}
C - Ubiquity
题意:
要求你计算有多少个满足条件的序列。
- 存在一个位置的值为0.
- 存在一个位置的值为9.
思路(容斥一下):
- 先枚举所有情况 ( 1 0 n 10^n 10n)
- 不满足条件的有两种。没有0,没有9.(0和9都没有)。
- 所以 a n s = 1 0 n − 9 n − 9 n + 8 n ans=10^n-9^n-9^n+8^n ans=10n−9n−9n+8n(由于0和9的这种情况减去了两次,所以要加回来)
AC
#include <vector>
#include <map>
#include <set>
#include <iostream>
using namespace std;
typedef long long ll;
typedef long double ld;
#define maxn 1000010
const ll mod=1e9+7;
#define sz(a) a.size()
typedef pair<int,int> pii;
typedef map<int,int> mii;
typedef vector<int> vi;
typedef vector<vector<int>> vii;
typedef vector<long long> vll;
typedef vector<bool> vb;
typedef set<int> si;
#define fori(i,a,b) for(int i = (a); i < (b); ++i)
#define rep(i,b,a) for(int i = (b); i >= (a); --i)
#define all(a) (a).begin(), (a).end()
#define __builtin_popcountll bitCountLL
#define __builtin_popcount bitCount
//__builtin_ctz 末尾0的个数, __builtin_clz 前导0的个数
//__builtin_ffs 最后一个1的位置
const int INF = 2e9;
const ll ML = 4e18;
ll Pow(ll x, ll p) {
ll res = 1;
while(p) {
if(p & 1) res = (res * x) % mod;
p >>= 1;
x = (x * x ) % mod;
}
return res;
}
ll fac[maxn], inv[maxn];
void init() {
fac[0] = fac[1] = 1;
fori(i,2,maxn) fac[i] = (fac[i-1] * i) % mod;
inv[maxn-1] = Pow(fac[maxn-1],mod-2);
rep(i,maxn-2,0) inv[i] = (inv[i+1] * (i + 1)) % mod;
///inv[i]=Pow(i,mod-2);
}
ll C(int a, int b) {
return (fac[b] * inv[a] % mod * inv[b - a] % mod) % mod;
}
ll A(int a, int b) {
return fac[b] * inv[b-a] % mod;
}
ll cnt[maxn];
ll mul(ll a, ll b){
return (a%mod)*(b%mod)%mod;
}
vector<int>a[maxn];
int main()
{
init();
int n;cin>>n;
///if(n==1)return cout<<0<<endl,0;
///ll ans=2*C(2,n)%mod;
ll a=1,b=1,c=1;
for(int i=1; i<=n; i++){
a=a*10%mod;
b=b*9%mod;
c=c*8%mod;
}
a=(a-b%mod+mod)%mod;
a=(a-b%mod+mod)%mod;
a=(a+c%mod)%mod;
cout<<a<<endl;
return 0;
}/*
// for(int i=1; i<=n-2; i++)ans=ans*10%mod;
// ans=ans*A(n,n)%mod;
//a=((a-(b*2%mod)+mod)%mod-c+mod)%mod;
//cout<<ans<<endl;
*/