今日SGU 5.2
SGU123
题意:求和
收获:无
- #include<bits/stdc++.h>
- #define de(x) cout<<#x<<"="<<x<<endl;
- #define dd(x) cout<<#x<<"="<<x<<" ";
- #define rep(i,a,b) for(int i=a;i<(b);++i)
- #define repd(i,a,b) for(int i=a;i>=(b);--i)
- #define repp(i,a,b,t) for(int i=a;i<(b);i+=t)
- #define ll long long
- #define mt(a,b) memset(a,b,sizeof(a))
- #define fi first
- #define se second
- #define inf 0x3f3f3f3f
- #define INF 0x3f3f3f3f3f3f3f3f
- #define pii pair<int,int>
- #define pdd pair<double,double>
- #define pdi pair<double,int>
- #define mp(u,v) make_pair(u,v)
- #define sz(a) (int)a.size()
- #define ull unsigned long long
- #define ll long long
- #define pb push_back
- #define PI acos(-1.0)
- #define qc std::ios::sync_with_stdio(false)
- #define db double
- #define all(a) a.begin(),a.end()
- const int mod = 1e9+;
- const int maxn = 1e5+;
- const double eps = 1e-;
- using namespace std;
- bool eq(const db &a, const db &b) { return fabs(a - b) < eps; }
- bool ls(const db &a, const db &b) { return a + eps < b; }
- bool le(const db &a, const db &b) { return eq(a, b) || ls(a, b); }
- ll gcd(ll a,ll b) { return a==?b:gcd(b%a,a); };
- ll lcm(ll a,ll b) { return a/gcd(a,b)*b; }
- ll kpow(ll a,ll b) {ll res=;a%=mod; if(b<) return ; for(;b;b>>=){if(b&)res=res*a%mod;a=a*a%mod;}return res;}
- int read(){
- int x=,f=;char ch=getchar();
- while (ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
- while (ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
- return x*f;
- }
- //inv[1]=1;
- //for(int i=2;i<=n;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
- ll f[];
- int main(){
- f[]=;f[]=;
- rep(i,,) f[i]=f[i-]+f[i-];
- int k = read();
- ll sum = ;
- rep(i,,k+) sum+=f[i];
- printf("%lld\n",sum);
- return ;
- }
SGU115
题意:求2001某月某日是星期几
收获:注意无解的情况
- #include<bits/stdc++.h>
- #define de(x) cout<<#x<<"="<<x<<endl;
- #define dd(x) cout<<#x<<"="<<x<<" ";
- #define rep(i,a,b) for(int i=a;i<(b);++i)
- #define repd(i,a,b) for(int i=a;i>=(b);--i)
- #define repp(i,a,b,t) for(int i=a;i<(b);i+=t)
- #define ll long long
- #define mt(a,b) memset(a,b,sizeof(a))
- #define fi first
- #define se second
- #define inf 0x3f3f3f3f
- #define INF 0x3f3f3f3f3f3f3f3f
- #define pii pair<int,int>
- #define pdd pair<double,double>
- #define pdi pair<double,int>
- #define mp(u,v) make_pair(u,v)
- #define sz(a) (int)a.size()
- #define ull unsigned long long
- #define ll long long
- #define pb push_back
- #define PI acos(-1.0)
- #define qc std::ios::sync_with_stdio(false)
- #define db double
- #define all(a) a.begin(),a.end()
- const int mod = 1e9+;
- const int maxn = 1e5+;
- const double eps = 1e-;
- using namespace std;
- bool eq(const db &a, const db &b) { return fabs(a - b) < eps; }
- bool ls(const db &a, const db &b) { return a + eps < b; }
- bool le(const db &a, const db &b) { return eq(a, b) || ls(a, b); }
- ll gcd(ll a,ll b) { return a==?b:gcd(b%a,a); };
- ll lcm(ll a,ll b) { return a/gcd(a,b)*b; }
- ll kpow(ll a,ll b) {ll res=;a%=mod; if(b<) return ; for(;b;b>>=){if(b&)res=res*a%mod;a=a*a%mod;}return res;}
- ll read(){
- ll x=,f=;char ch=getchar();
- while (ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
- while (ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
- return x*f;
- }
- //inv[1]=1;
- //for(int i=2;i<=n;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
- int month[]={,,,,,,,,,,,,};
- int main(){
- int n,m;
- scanf("%d%d",&n,&m);
- if(m>) return puts("Impossible"),;
- if(n>month[m]) return puts("Impossible"),;
- rep(i,,m) n+=month[i];
- n%=;if(!n)n=;
- printf("%d\n",n);
- return ;
- }
SGU105
题意:1,12,123,...,1....N,求这n个数字中被3整除的个数
收获:打表
- #include<bits/stdc++.h>
- #define de(x) cout<<#x<<"="<<x<<endl;
- #define dd(x) cout<<#x<<"="<<x<<" ";
- #define rep(i,a,b) for(int i=a;i<(b);++i)
- #define repd(i,a,b) for(int i=a;i>=(b);--i)
- #define repp(i,a,b,t) for(int i=a;i<(b);i+=t)
- #define ll long long
- #define mt(a,b) memset(a,b,sizeof(a))
- #define fi first
- #define se second
- #define inf 0x3f3f3f3f
- #define INF 0x3f3f3f3f3f3f3f3f
- #define pii pair<int,int>
- #define pdd pair<double,double>
- #define pdi pair<double,int>
- #define mp(u,v) make_pair(u,v)
- #define sz(a) (int)a.size()
- #define ull unsigned long long
- #define ll long long
- #define pb push_back
- #define PI acos(-1.0)
- #define qc std::ios::sync_with_stdio(false)
- #define db double
- #define all(a) a.begin(),a.end()
- const int mod = 1e9+;
- const int maxn = 1e5+;
- const double eps = 1e-;
- using namespace std;
- bool eq(const db &a, const db &b) { return fabs(a - b) < eps; }
- bool ls(const db &a, const db &b) { return a + eps < b; }
- bool le(const db &a, const db &b) { return eq(a, b) || ls(a, b); }
- ll gcd(ll a,ll b) { return a==?b:gcd(b%a,a); };
- ll lcm(ll a,ll b) { return a/gcd(a,b)*b; }
- ll kpow(ll a,ll b) {ll res=;a%=mod; if(b<) return ; for(;b;b>>=){if(b&)res=res*a%mod;a=a*a%mod;}return res;}
- ll read(){
- ll x=,f=;char ch=getchar();
- while (ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
- while (ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
- return x*f;
- }
- //inv[1]=1;
- //for(int i=2;i<=n;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
- int bit(int x){
- int ret = ;
- while(x) x/=,ret++;
- return ret;
- }
- void dabiao(){
- ll sum = ;
- rep(i,,){
- sum = sum * kpow(,bit(i)) + i;
- if(sum%==) de(sum)
- }
- }
- int main(){
- // dabiao();
- int n,now=;
- scanf("%d",&n);
- n--;
- int t = n/;
- int d = n%;
- printf("%d\n",t*+d);
- return ;
- }
SGU135
题意:问你画n个线段,最多把一个无穷大的矩形分成几个区域
收获:打表,找规律,或者可以这么想,你新加入第k条直线,最多与k-1一条直线同时相交,那么最多就会比上一次多弄出k个区间
- #include<bits/stdc++.h>
- #define de(x) cout<<#x<<"="<<x<<endl;
- #define dd(x) cout<<#x<<"="<<x<<" ";
- #define rep(i,a,b) for(int i=a;i<(b);++i)
- #define repd(i,a,b) for(int i=a;i>=(b);--i)
- #define repp(i,a,b,t) for(int i=a;i<(b);i+=t)
- #define ll long long
- #define mt(a,b) memset(a,b,sizeof(a))
- #define fi first
- #define se second
- #define inf 0x3f3f3f3f
- #define INF 0x3f3f3f3f3f3f3f3f
- #define pii pair<int,int>
- #define pdd pair<double,double>
- #define pdi pair<double,int>
- #define mp(u,v) make_pair(u,v)
- #define sz(a) (int)a.size()
- #define ull unsigned long long
- #define ll long long
- #define pb push_back
- #define PI acos(-1.0)
- #define qc std::ios::sync_with_stdio(false)
- #define db double
- #define all(a) a.begin(),a.end()
- const int mod = 1e9+;
- const int maxn = ;
- const double eps = 1e-;
- using namespace std;
- bool eq(const db &a, const db &b) { return fabs(a - b) < eps; }
- bool ls(const db &a, const db &b) { return a + eps < b; }
- bool le(const db &a, const db &b) { return eq(a, b) || ls(a, b); }
- ll gcd(ll a,ll b) { return a==?b:gcd(b%a,a); };
- ll lcm(ll a,ll b) { return a/gcd(a,b)*b; }
- ll kpow(ll a,ll b) {ll res=;a%=mod; if(b<) return ; for(;b;b>>=){if(b&)res=res*a%mod;a=a*a%mod;}return res;}
- ll read(){
- ll x=,f=;char ch=getchar();
- while (ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
- while (ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
- return x*f;
- }
- //inv[1]=1;
- //for(int i=2;i<=n;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
- ll f[maxn];
- int main(){
- f[]=;f[]=;
- int n;
- scanf("%d",&n);
- rep(i,,n+) f[i]=f[i-]+i;
- printf("%lld\n",f[n]);
- return ;
- }
SGU184
题意:让你做饼,要求最大数量
收获:无
- #include<bits/stdc++.h>
- #define de(x) cout<<#x<<"="<<x<<endl;
- #define dd(x) cout<<#x<<"="<<x<<" ";
- #define rep(i,a,b) for(int i=a;i<(b);++i)
- #define repd(i,a,b) for(int i=a;i>=(b);--i)
- #define repp(i,a,b,t) for(int i=a;i<(b);i+=t)
- #define ll long long
- #define mt(a,b) memset(a,b,sizeof(a))
- #define fi first
- #define se second
- #define inf 0x3f3f3f3f
- #define INF 0x3f3f3f3f3f3f3f3f
- #define pii pair<int,int>
- #define pdd pair<double,double>
- #define pdi pair<double,int>
- #define mp(u,v) make_pair(u,v)
- #define sz(a) (int)a.size()
- #define ull unsigned long long
- #define ll long long
- #define pb push_back
- #define PI acos(-1.0)
- #define qc std::ios::sync_with_stdio(false)
- #define db double
- #define all(a) a.begin(),a.end()
- const int mod = 1e9+;
- const int maxn = 1e5+;
- const double eps = 1e-;
- using namespace std;
- bool eq(const db &a, const db &b) { return fabs(a - b) < eps; }
- bool ls(const db &a, const db &b) { return a + eps < b; }
- bool le(const db &a, const db &b) { return eq(a, b) || ls(a, b); }
- ll gcd(ll a,ll b) { return a==?b:gcd(b%a,a); };
- ll lcm(ll a,ll b) { return a/gcd(a,b)*b; }
- ll kpow(ll a,ll b) {ll res=;a%=mod; if(b<) return ; for(;b;b>>=){if(b&)res=res*a%mod;a=a*a%mod;}return res;}
- ll read(){
- ll x=,f=;char ch=getchar();
- while (ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
- while (ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
- return x*f;
- }
- //inv[1]=1;
- //for(int i=2;i<=n;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
- int main(){
- int p,m,c,k,r,v;
- scanf("%d%d%d%d%d%d",&p,&m,&c,&k,&r,&v);
- // de(c)de(v)
- printf("%d\n",min(p/k,min(m/r,c/v)));
- return ;
- }
SGU113
题意:求一个数能不能分解成两个素数相乘
收获:素数打表
- #include<bits/stdc++.h>
- #define de(x) cout<<#x<<"="<<x<<endl;
- #define dd(x) cout<<#x<<"="<<x<<" ";
- #define rep(i,a,b) for(int i=a;i<(b);++i)
- #define repd(i,a,b) for(int i=a;i>=(b);--i)
- #define repp(i,a,b,t) for(int i=a;i<(b);i+=t)
- #define ll long long
- #define mt(a,b) memset(a,b,sizeof(a))
- #define fi first
- #define se second
- #define inf 0x3f3f3f3f
- #define INF 0x3f3f3f3f3f3f3f3f
- #define pii pair<int,int>
- #define pdd pair<double,double>
- #define pdi pair<double,int>
- #define mp(u,v) make_pair(u,v)
- #define sz(a) (int)a.size()
- #define ull unsigned long long
- #define ll long long
- #define pb push_back
- #define PI acos(-1.0)
- #define qc std::ios::sync_with_stdio(false)
- #define db double
- #define all(a) a.begin(),a.end()
- const int N = 1e5+;
- bool isPrime[N];
- int prim[];
- void prime(){
- int num = ;
- memset(isPrime,true,sizeof(isPrime));
- isPrime[] = isPrime[] = false;
- for(int i= ; i<=N ; i++){
- if( isPrime[i] ) prim[num++] = i;
- for(int j= ; j<num ; j++){
- if( i*prim[j]>N ) break;
- isPrime[ i*prim[j] ] = false;
- if( i%prim[j] == ) break;
- }
- }
- }
- bool isprime(int x){
- for(int i=;i*i<=x;++i) if(x%i==) return false;
- return true;
- }
- bool ok(int x){
- for(int i=;i*i<=x;++i){
- if(x%i==&&isPrime[i]){
- if(isprime(x/i)) return true;
- }
- }
- return false;
- }
- int main(){
- prime();
- int n,x;
- scanf("%d",&n);
- rep(i,,n){
- scanf("%d",&x);
- puts(ok(x)?"Yes":"No");
- }
- return ;
- }
SGU112
题意:求a^b-b^a
收获:kuangbin的string高精度板子,用了std::ios::sync_with_stdio(false),不能再用printf和scanf了,会出现奇怪的错误,会wa
- #include<bits/stdc++.h>
- #define de(x) cout<<#x<<"="<<x<<endl;
- #define dd(x) cout<<#x<<"="<<x<<" ";
- #define rep(i,a,b) for(int i=a;i<(b);++i)
- #define repd(i,a,b) for(int i=a;i>=(b);--i)
- #define repp(i,a,b,t) for(int i=a;i<(b);i+=t)
- #define ll long long
- #define mt(a,b) memset(a,b,sizeof(a))
- #define fi first
- #define se second
- #define inf 0x3f3f3f3f
- #define INF 0x3f3f3f3f3f3f3f3f
- #define pii pair<int,int>
- #define pdd pair<double,double>
- #define pdi pair<double,int>
- #define mp(u,v) make_pair(u,v)
- #define sz(a) (int)a.size()
- #define ull unsigned long long
- #define ll long long
- #define pb push_back
- #define PI acos(-1.0)
- #define qc std::ios::sync_with_stdio(false)
- #define db double
- #define all(a) a.begin(),a.end()
- const int mod = 1e9+;
- const int maxn = 1e5+;
- const double eps = 1e-;
- using namespace std;
- bool eq(const db &a, const db &b) { return fabs(a - b) < eps; }
- bool ls(const db &a, const db &b) { return a + eps < b; }
- bool le(const db &a, const db &b) { return eq(a, b) || ls(a, b); }
- ll gcd(ll a,ll b) { return a==?b:gcd(b%a,a); };
- ll lcm(ll a,ll b) { return a/gcd(a,b)*b; }
- ll kpow(ll a,ll b) {ll res=;a%=mod; if(b<) return ; for(;b;b>>=){if(b&)res=res*a%mod;a=a*a%mod;}return res;}
- ll read(){
- ll x=,f=;char ch=getchar();
- while (ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
- while (ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
- return x*f;
- }
- //inv[1]=1;
- //for(int i=2;i<=n;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
- string add(string str1,string str2)//高精度加法
- {
- string str;
- int len1=str1.length();
- int len2=str2.length();
- //前面补0,弄成长度相同
- if(len1<len2)
- {
- for(int i=;i<=len2-len1;i++)
- str1=""+str1;
- }
- else
- {
- for(int i=;i<=len1-len2;i++)
- str2=""+str2;
- }
- len1=str1.length();
- int cf=;
- int temp;
- for(int i=len1-;i>=;i--)
- {
- temp=str1[i]-''+str2[i]-''+cf;
- cf=temp/;
- temp%=;
- str=char(temp+'')+str;
- }
- if(cf!=) str=char(cf+'')+str;
- return str;
- }
- string mul(string str1,string str2)
- {
- string str;
- int len1=str1.length();
- int len2=str2.length();
- string tempstr;
- for(int i=len2-;i>=;i--)
- {
- tempstr="";
- int temp=str2[i]-'';
- int t=;
- int cf=;
- if(temp!=)
- {
- for(int j=;j<=len2--i;j++)
- tempstr+="";
- for(int j=len1-;j>=;j--)
- {
- t=(temp*(str1[j]-'')+cf)%;
- cf=(temp*(str1[j]-'')+cf)/;
- tempstr=char(t+'')+tempstr;
- }
- if(cf!=) tempstr=char(cf+'')+tempstr;
- }
- str=add(str,tempstr);
- }
- str.erase(,str.find_first_not_of(''));
- return str;
- }
- string sub(string str1,string str2)//高精度减法
- {
- string str;
- int tmp=str1.length()-str2.length();
- int cf=;
- for(int i=str2.length()-;i>=;i--)
- {
- if(str1[tmp+i]<str2[i]+cf)
- {
- str=char(str1[tmp+i]-str2[i]-cf+''+)+str;
- cf=;
- }
- else
- {
- str=char(str1[tmp+i]-str2[i]-cf+'')+str;
- cf=;
- }
- }
- for(int i=tmp-;i>=;i--)
- {
- if(str1[i]-cf>='')
- {
- str=char(str1[i]-cf)+str;
- cf=;
- }
- else
- {
- str=char(str1[i]-cf+)+str;
- cf=;
- }
- }
- str.erase(,str.find_first_not_of(''));//去除结果中多余的前导0
- return str;
- }
- int bit(int x){
- int ret = ;
- while(x) x/=,ret++;
- return ret;
- }
- string change(int x){
- char s[];
- int len = bit(x) - ;
- s[len+] = '\0';
- while(x){
- s[len--]=(x%+'');
- x/=;
- }
- string ss = s;
- return ss;
- }
- bool big(string a,string b){
- if(sz(a)<sz(b)) return false;
- if(sz(a)>sz(b)) return true;
- return a>b;
- }
- int main(){
- qc;
- bool fg=false;
- int ta,tb;
- cin>>ta>>tb;
- string a,b;
- a=change(ta),b=change(tb);
- // de(a)de(b)
- string ansa=a,ansb=b;
- rep(i,,tb) ansa=mul(ansa,a);
- rep(i,,ta) ansb=mul(ansb,b);
- if(big(ansb,ansa)) fg=true,swap(ansa,ansb);
- if(fg) cout<<'-';
- string ans=sub(ansa,ansb);
- cout<<ans;
- return ;
- }
今日SGU 5.2的更多相关文章
- 今日SGU 6.6
sgu 177 题意:给你一个一开始全是白色的正方形,边长为n,然后问你经过几次染色之后,最后的矩形里面 还剩多少个白色的块 收获:矩形切割,我们可以这么做,离散处理,对于每次染黑的操作,看看后面有没 ...
- 今日SGU 6.5
sgu 160 题意:给你n个数字 数字范围 1 到 m 问你从中取出任意数量的数字使得这些数字的积取模m最大 收获:dp,记录dp的路径 #include<bits/stdc++.h> ...
- 今日SGU 5.30
SGU 190 题意:给你个n*n的矩形,然后上面有几个点不能放东西,然后问你能不能用1*2的矩形,把能放 东西的地方放满 收获:一开始想的是,dfs,然后感觉这样的话,代码很长,而且很容易超时, 看 ...
- 今日SGU 5.29
sgu 299 题意:给你n个线段,然后问你能不能选出其中三个组成一个三角形,数字很大 收获:另一个大整数模板 那么考虑下为什么如果连续三个不可以的话,一定是不存在呢? 连续上个不合法的话,一定是 a ...
- 今日SGU 5.28
SGU 121 题意:给你一张图,问你每个顶点必须有黑白两条边(如果它的边数>=2),问你怎么染色,不行就输出no 收获:你会发现不行的情况只有一个单纯的奇数环的时候,反之我们交替染色即可 #i ...
- 今日SGU 5.27
SGU 122 题意:给你n个人,每个人有大于 N / 2(向上取整)的朋友,问你1这个人有一个书,每个人都想看,只能从朋友之间传递,然后最后回到了1这个人,问你 是否有解,然后有解输出路径 收获:哈 ...
- 今日SGU 5.26
#include<bits/stdc++.h> #define de(x) cout<<#x<<"="<<x<<endl ...
- 今日SGU 5.25
SGU 194 题意:无源汇有上下界的最大流 收获:https://wenku.baidu.com/view/0f3b691c59eef8c75fbfb35c.html #include<bit ...
- 今日SGU 5.23
SGU 223 题意:给你n*n的矩形,放k个国王,每个国王不能放在别的国王的8连边上,问你有多少种方法 收获:状态DP,因为每行的放置只会影响下一行,然我们就枚举每行的状态和对应的下一行的状态,当两 ...
- 今日SGU 5.22
SGU 296 题意:给你一个最多1000位的数,让你删除k位使得剩下的数最大 收获:贪心 #include<bits/stdc++.h> #define de(x) cout<&l ...
随机推荐
- ECNUOJ 2150 完美的拯救
完美的拯救 Time Limit:1000MS Memory Limit:65536KBTotal Submit:147 Accepted:50 Description 一只可怜的蚂蚁被万恶的魔术师 ...
- 坑爹的RockSaw和坑爹的windows7
坑爹的RockSaw和坑爹的windows7 http://chen4w.iteye.com/blog/1153433
- ArcGIS api for javascript——显示地图属性
描述 本例展示了如哦读取地图和图层的属性和返回信息给用户.本例中的四个按钮允许用户接收地图属性.每个按钮调用不同的函数. ·Get All Map Layers - 这个按钮调用getMapLayer ...
- placement new和delete
注意,我们无法改变new和delete操作符. 但是我们可以重载来里面的operator new 和 operator delete 方法,这个方法是被new操作符调用的,调用之后获得地址,会继续用构 ...
- Oracle EBS发放销售订单
模拟发放销售订单界面进行发放操作 PROCEDURE insert_row(x_batch_id OUT NUMBER) IS l_autopack_flag VARCHAR2(1 ); l_a ...
- 基于express+redis高速实现实时在线用户数统计
作者:zhanhailiang 日期:2014-11-09 本文将介绍怎样基于express+redis高速实现实时在线用户数统计. 1. 在github.com上创建项目uv-tj.将其同步到本地: ...
- 用JS把复选框做成单选框,左显示div,右隐藏div
<input type="checkbox" name="checkname" onclick="check(this)"/>左 ...
- Android 勤用RXJava compose操作符消除重复代码
相信小伙伴在使用RXJava与Retrofit请求网络时,都有遇到过这样的场景,在IO线程请求网络解析数据,接着返回主线程setData.更新View试图,那么也肯定熟悉下面这几句代码: .subsc ...
- 紫书 习题 10-19 UVa 10868 (物理动能定理)
这道题看起来很长,而实际上就是考物理 可以用动能定理来算出末速度. 同时注意要特判绳子比桥还长的情况. #include<cstdio> #include<cmath> #de ...
- OpenJDK源码研究笔记(十四):三种经典的设计方法,接口,接口-抽象类-具体实现类,接口-具体实现类
在研究OpenJDK源码过程中,我发现常用的设计方法就是2种:接口,接口-抽象类-具体实现类 . 在一些其它开源框架和业务开发中,经常存在着第3种设计,接口-具体实现类. 1.只有接口,没有实现类. ...